diff --git a/docs/api-content/api-docs/edge-v1/emc-api.json b/docs/api-content/api-docs/edge-v1/emc-api.json index 82ae13543f..744221602c 100644 --- a/docs/api-content/api-docs/edge-v1/emc-api.json +++ b/docs/api-content/api-docs/edge-v1/emc-api.json @@ -568,7 +568,7 @@ "get": { "description": "Get the base64 encoded key used to verify the signed content.", "tags": [ - "content" + "edge-mgmt" ], "summary": "Get the public key used to verify the signed content.", "operationId": "V1GetContentSigningPublicKey", @@ -762,6 +762,154 @@ } } }, + "/v1/edge-mgmt/edgehosts/current/audits": { + "get": { + "tags": [ + "edge-mgmt" + ], + "summary": "Retrieves the list of audit logs", + "operationId": "v1Audits", + "parameters": [ + { + "type": "string", + "format": "date-time", + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "name": "startTime", + "in": "query" + }, + { + "type": "string", + "format": "date-time", + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "name": "endTime", + "in": "query" + }, + { + "type": "string", + "description": "Specify the user uid, to retrieve the specific user audit logs", + "name": "userUid", + "in": "query" + }, + { + "type": "string", + "description": "Specify the resource name, to retrieve the specific resource audit logs", + "name": "resourceKind", + "in": "query" + }, + { + "enum": [ + "create", + "update", + "delete", + "activity", + "action" + ], + "type": "string", + "name": "actionType", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "name": "offset", + "in": "query" + }, + { + "type": "string", + "description": "continue token to paginate the subsequent data items", + "name": "continue", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AuditsList" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/v1NotFoundResponseWithMessage" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/v1Error" + } + } + } + } + }, + "/v1/edge-mgmt/edgehosts/current/audits/download": { + "get": { + "description": "Download audit logs as a single compressed file", + "produces": [ + "application/x-tar", + "application/json" + ], + "tags": [ + "edge-mgmt" + ], + "summary": "Download audit logs", + "operationId": "v1AuditDownload", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "file", + "format": "binary" + }, + "headers": { + "Content-Disposition": { + "type": "string", + "description": "Specifies the filename for the downloaded file." + } + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/v1NotFoundResponseWithMessage" + } + }, + "default": { + "description": "generic error response", + "schema": { + "$ref": "#/definitions/apiError" + } + } + } + } + }, + "/v1/edge-mgmt/edgehosts/current/audits/filters": { + "get": { + "tags": [ + "edge-mgmt" + ], + "summary": "Retrieves the list of filter options to display on audit ui page", + "operationId": "v1AuditFilter", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AuditFilterObect" + } + } + } + } + }, "/v1/edge-mgmt/edgehosts/current/configurations": { "get": { "description": "Get edge host configurations.", @@ -928,6 +1076,98 @@ } } }, + "/v1/edge-mgmt/edgehosts/current/file-download/files": { + "get": { + "description": "Lists all the first level files from the '/var/log/files' directory.\n", + "tags": [ + "edge-mgmt" + ], + "summary": "List custom files from the '/var/log/files' directory", + "operationId": "v1EdgeHostListCustomFiles", + "responses": { + "200": { + "description": "A list of files with metadata.", + "schema": { + "$ref": "#/definitions/v1FileMetadataList" + } + }, + "404": { + "description": "Not found", + "schema": { + "$ref": "#/definitions/v1Error" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/v1Error" + } + }, + "default": { + "description": "generic error response", + "schema": { + "$ref": "#/definitions/apiError" + } + } + } + } + }, + "/v1/edge-mgmt/edgehosts/current/file-download/{filePath}": { + "get": { + "description": "Downloads a file from the `/var/log/files` directory. The file path is expected to be relative to the `/var/log/files` directory.\n", + "produces": [ + "application/octet-stream", + "application/json" + ], + "tags": [ + "edge-mgmt" + ], + "summary": "Download a custom file from the user-defined or default directory", + "operationId": "v1EdgeHostCustomFileDownload", + "parameters": [ + { + "type": "string", + "description": "Relative path of the file to download.", + "name": "filePath", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "File downloaded successfully", + "schema": { + "type": "file", + "format": "binary" + }, + "headers": { + "Content-Disposition": { + "type": "string", + "description": "Specifies the filename for the downloaded file." + } + } + }, + "404": { + "description": "Not found", + "schema": { + "$ref": "#/definitions/v1Error" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/v1Error" + } + }, + "default": { + "description": "generic error response", + "schema": { + "$ref": "#/definitions/apiError" + } + } + } + } + }, "/v1/edge-mgmt/edgehosts/current/generate-logs": { "post": { "description": "Start edge host log collection", @@ -1004,7 +1244,7 @@ "get": { "description": "Get general settings", "tags": [ - "settings" + "edge-mgmt" ], "summary": "Get general settings", "operationId": "v1Settings", @@ -1307,6 +1547,125 @@ "amd64" ] }, + "v1Audit": { + "description": "Audit response payload", + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1AuditMeta" + }, + "spec": { + "$ref": "#/definitions/v1AuditSpec" + } + } + }, + "v1AuditActor": { + "description": "Audit actor object", + "properties": { + "actorType": { + "type": "string", + "enum": [ + "user", + "system" + ] + }, + "uid": { + "description": "id of actor", + "type": "string" + } + } + }, + "v1AuditFilterObect": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + }, + "v1AuditMeta": { + "properties": { + "createTimestamp": { + "description": "CreationTimestamp is a timestamp representing the server time when this object was created.", + "type": "string", + "format": "date-time" + }, + "edgeHostId": { + "description": "edge host id", + "type": "string" + } + } + }, + "v1AuditResourceReference": { + "description": "Audit resource object", + "properties": { + "kind": { + "description": "Audit resource type", + "type": "string" + }, + "name": { + "description": "Audit resource name", + "type": "string" + }, + "uid": { + "description": "Audit resource id", + "type": "string" + } + } + }, + "v1AuditSpec": { + "description": "Audit specifications", + "properties": { + "actionType": { + "type": "string", + "enum": [ + "create", + "update", + "delete", + "action", + "activity" + ] + }, + "actor": { + "$ref": "#/definitions/v1AuditActor" + }, + "message": { + "description": "Audit action message", + "type": "string" + }, + "resource": { + "$ref": "#/definitions/v1AuditResourceReference" + } + } + }, + "v1AuditsList": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "List of audit message", + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/v1Audit" + } + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + } + }, "v1AuthLogin": { "type": "object", "properties": { @@ -2024,6 +2383,9 @@ "items": { "$ref": "#/definitions/v1Nic" } + }, + "paletteEndpointURL": { + "type": "string" } } }, @@ -2381,6 +2743,36 @@ } } }, + "v1FileMetadata": { + "type": "object", + "properties": { + "creationTimestamp": { + "type": "string", + "format": "date-time" + }, + "fileName": { + "type": "string" + }, + "lastModifiedTimestamp": { + "type": "string", + "format": "date-time" + }, + "size": { + "type": "string" + } + } + }, + "v1FileMetadataList": { + "type": "object", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/v1FileMetadata" + } + } + } + }, "v1GPUDeviceSpec": { "type": "object", "properties": { @@ -2608,6 +3000,27 @@ } } }, + "v1ListMetaData": { + "description": "ListMeta describes metadata for the resource listing", + "type": "object", + "properties": { + "continue": { + "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", + "type": "string", + "x-omitempty": false + }, + "limit": { + "description": "Number of records feteched", + "type": "integer", + "x-omitempty": false + }, + "offset": { + "description": "The next offset for the pagination. Starting index for which next request will be placed.", + "type": "integer", + "x-omitempty": false + } + } + }, "v1LoginSuccess": { "description": "System login success response", "type": "object", diff --git a/docs/api-content/api-docs/palette-apis.json b/docs/api-content/api-docs/palette-apis.json index 152803bd5b..b59e0e8efd 100644 --- a/docs/api-content/api-docs/palette-apis.json +++ b/docs/api-content/api-docs/palette-apis.json @@ -118833,6 +118833,14 @@ } } }, + "clusterType": { + "type": "string", + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ] + }, "machinepoolconfig": { "type": "array", "items": { @@ -119409,6 +119417,14 @@ } } }, + "clusterType": { + "type": "string", + "default": "PureManage", + "enum": [ + "PureManage", + "PureAttach" + ] + }, "machinepoolconfig": { "type": "array", "items": { @@ -139021,253035 +139037,4 @@ "type": "object", "additionalProperties": { "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Tke Cluster validation response", - "schema": { - "description": "Cluster validator response", - "type": "object", - "properties": { - "machinePools": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/upgrade/settings": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get cluster settings by context", - "operationId": "v1SpectroClustersUpgradeSettingsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "properties": { - "spectroComponents": { - "type": "string", - "enum": [ - "lock", - "unlock" - ] - } - } - } - } - } - } - }, - "/v1/spectroclusters/validate/name": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates the cluster name", - "operationId": "v1SpectroClustersValidateName", - "parameters": [ - { - "type": "string", - "description": "Cluster name", - "name": "name", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/spectroclusters/validate/packs": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates spectro cluster packs", - "operationId": "v1SpectroClustersValidatePacks", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster entity for pack refs validate", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Cluster packs validation response", - "schema": { - "description": "Cluster validator response", - "type": "object", - "properties": { - "machinePools": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/virtual": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Creates a virtual cluster", - "operationId": "v1SpectroClustersVirtualCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Spectro virtual cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "clusterConfig" - ], - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/spectroclusters/virtual/packs/values": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the cluster pack values yaml", - "operationId": "v1VirtualClustersPacksValues", - "parameters": [ - { - "enum": [ - "k3s", - "cncf_k8s" - ], - "type": "string", - "default": "k3s", - "description": "Kubernetes distribution type", - "name": "kubernetesDistroType", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Successful response", - "schema": { - "description": "Virtual cluster packs values", - "type": "object", - "properties": { - "packs": { - "type": "array", - "items": { - "description": "Virtual cluster packs value", - "type": "object", - "properties": { - "distroType": { - "type": "string" - }, - "layer": { - "type": "string" - }, - "values": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/virtual/validate": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates virtual cluster create operation", - "operationId": "v1SpectroClustersVirtualValidate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Spectro virtual cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "clusterConfig" - ], - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Virtual Cluster validation response", - "schema": { - "description": "Cluster validator response", - "type": "object", - "properties": { - "machinePools": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/vsphere": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Creates a vSphere cluster", - "operationId": "v1SpectroClustersVsphereCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "vSphere cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "edgeHostUid": { - "description": "Appliance (Edge Host) uid for Edge env", - "type": "string" - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/spectroclusters/vsphere/import": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Imports a vSphere cluster", - "operationId": "v1SpectroClustersVsphereImport", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Spectro Vsphere cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/spectroclusters/vsphere/rate": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get vSphere cluster estimated rate information", - "operationId": "v1SpectroClustersVsphereRate", - "parameters": [ - { - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "type": "string", - "default": "hourly", - "name": "periodType", - "in": "query" - }, - { - "name": "body", - "in": "body", - "schema": { - "description": "Vsphere cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Vsphere Cluster estimated rate response", - "schema": { - "description": "Cluster estimated rate information", - "type": "object", - "properties": { - "machinePools": { - "type": "array", - "items": { - "description": "Machine pool estimated rate information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nodesCount": { - "type": "integer", - "format": "int32" - }, - "rate": { - "description": "Cloud estimated rate information", - "type": "object", - "properties": { - "compute": { - "description": "Compute estimated rate information", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "type": { - "type": "string" - } - } - }, - "storage": { - "type": "array", - "items": { - "description": "Storage estimated rate information", - "type": "object", - "properties": { - "iops": { - "type": "number", - "format": "float64" - }, - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "sizeGB": { - "type": "number", - "format": "float64" - }, - "throughput": { - "type": "number", - "format": "float64" - }, - "type": { - "type": "string" - } - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "name": { - "type": "string" - }, - "rate": { - "description": "Cluster total estimated rate information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "resourceMetadata": { - "description": "Cloud resource metadata", - "type": "object", - "properties": { - "instanceTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - }, - "storageTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/vsphere/validate": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates vSphere cluster create operation", - "operationId": "v1SpectroClustersVsphereValidate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "vSphere cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "edgeHostUid": { - "description": "Appliance (Edge Host) uid for Edge env", - "type": "string" - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "vSphere Cluster validation response", - "schema": { - "description": "Cluster validator response", - "type": "object", - "properties": { - "machinePools": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster", - "operationId": "v1SpectroClustersGet", - "parameters": [ - { - "type": "string", - "description": "Comma separated tags like system,profile", - "name": "includeTags", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Resolve pack values if set to true", - "name": "resolvePackValues", - "in": "query" - }, - { - "type": "string", - "description": "Includes pack meta such as schema, presets", - "name": "includePackMeta", - "in": "query" - }, - { - "type": "string", - "description": "Filter cluster profile templates by profileType", - "name": "profileType", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Include non spectro labels in the cluster labels if set to true", - "name": "includeNonSpectroLabels", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "SpectroCluster is the Schema for the spectroclusters 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SpectroClusterSpec defines the desired state of SpectroCluster", - "type": "object", - "properties": { - "cloudConfigRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "cloudType": { - "type": "string" - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute contains additional cluster metadata information.", - "type": "string" - }, - "clusterRbac": { - "description": "Deprecated. Use clusterResources", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "machineHealthConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", - "type": "boolean" - } - } - }, - "clusterProfileTemplates": { - "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterType": { - "type": "string", - "enum": [ - "PureManage", - "AlloyMonitor", - "AlloyAssist", - "AlloyExtend" - ] - } - } - }, - "status": { - "description": "SpectroClusterStatus", - "type": "object", - "properties": { - "abortTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "addOnServices": { - "type": "array", - "items": { - "description": "Spectro cluster addon service", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "apiEndpoints": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "spcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the specified cluster", - "operationId": "v1SpectroClustersDelete", - "parameters": [ - { - "type": "boolean", - "description": "If set to true the cluster will be force deleted and user has to manually clean up the provisioned cloud resources", - "name": "forceDelete", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/assets": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the cluster asset doc", - "operationId": "v1SpectroClustersUidAssetsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster asset", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "frpKubeconfig": { - "type": "string" - }, - "kubeconfig": { - "type": "string" - }, - "kubeconfigclient": { - "type": "string" - }, - "manifest": { - "type": "string" - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Associate the assets for the cluster", - "operationId": "v1SpectroClustersUidAssets", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster asset", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "frpKubeconfig": { - "type": "string" - }, - "kubeconfig": { - "type": "string" - }, - "kubeconfigclient": { - "type": "string" - }, - "manifest": { - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/assets/adminKubeconfig": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's kube config file", - "operationId": "v1SpectroClustersUidAdminKubeConfig", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/assets/frpKubeconfig": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's frp kube config file", - "operationId": "v1SpectroClustersUidFrpKubeConfigGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the cluster's frp kube config data", - "operationId": "v1SpectroClustersUidFrpKubeConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster asset Frp Kube Config", - "type": "object", - "properties": { - "frpKubeconfig": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the cluster's frp kube config client data", - "operationId": "v1SpectroClustersUidFrpKubeConfigDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/assets/kubeconfig": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's kube config file", - "operationId": "v1SpectroClustersUidKubeConfig", - "parameters": [ - { - "type": "boolean", - "default": true, - "description": "FRP (reverse-proxy) based kube config will be returned if available", - "name": "frp", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the cluster's manifest data", - "operationId": "v1SpectroClustersUidKubeConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster asset Kube Config", - "type": "object", - "properties": { - "kubeconfig": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/assets/kubeconfigclient": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's kube config client file", - "operationId": "v1SpectroClustersUidKubeConfigClientGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the cluster's kube config client data", - "operationId": "v1SpectroClustersUidKubeConfigClientUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster asset Kube Config Client", - "type": "object", - "properties": { - "kubeconfigclient": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the cluster's kube config client data", - "operationId": "v1SpectroClustersUidKubeConfigClientDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/assets/manifest": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's manifest data", - "operationId": "v1SpectroClustersUidManifestGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "string" - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster's manifest data", - "operationId": "v1SpectroClustersUidManifestUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster asset", - "type": "object", - "properties": { - "manifest": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/clusterConfig/clusterMetaAttribute": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster meta attribute", - "operationId": "v1SpectroClustersUidClusterMetaAttributeUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster additional metadata entity", - "type": "object", - "properties": { - "clusterMetaAttribute": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/clusterConfig/controlPlaneHealthCheckTimeout": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster controlPlane health check timeout", - "operationId": "V1ControlPlaneHealthCheckTimeoutUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes", - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/clusterConfig/hostCluster": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster host config", - "operationId": "V1HostClusterConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/clusterConfig/lifecycleConfig": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster Life cycle configuration", - "operationId": "v1SpectroClustersUidLifecycleConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/clusterConfig/osPatch": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster OS patch configuration", - "operationId": "v1SpectroClustersUidOsPatchUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/config/namespaces": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves namespaces for the specified cluster", - "operationId": "v1SpectroClustersUidConfigNamespacesGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - }, - "status": { - "description": "Cluster namespace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates namespaces for the specified cluster", - "operationId": "v1SpectroClustersUidConfigNamespacesUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/config/namespaces/{namespaceUid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves the specified namespace of the cluster", - "operationId": "v1SpectroClustersUidConfigNamespacesUidGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Cluster's namespace response", - "schema": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - }, - "status": { - "description": "Cluster namespace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified namespace of the cluster", - "operationId": "v1SpectroClustersUidConfigNamespacesUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Cluster namespace uid", - "name": "namespaceUid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/config/rbacs": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves RBAC information for the specified cluster", - "operationId": "v1SpectroClustersUidConfigRbacsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates RBAC information for the specified cluster", - "operationId": "v1SpectroClustersUidConfigRbacsUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/config/rbacs/{rbacUid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves the specified RBAC of the cluster", - "operationId": "v1SpectroClustersUidConfigRbacsUidGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Cluster's RBAC response", - "schema": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified RBAC of the cluster", - "operationId": "v1SpectroClustersUidConfigRbacsUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "RBAC resource uid", - "name": "rbacUid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/download": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Download the specified cluster", - "operationId": "v1SpectroClustersUidDownload", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download cluster archive file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/edge-native/edgeHosts": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of edge host of edge-native cluster", - "operationId": "v1EdgeNativeClustersHostsList", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "List of edge host device", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "aclmeta": { - "description": "Resource access control information (Read-only response data)", - "type": "object", - "properties": { - "ownerUid": { - "description": "User or service uid which created the resource", - "type": "string" - }, - "projectUid": { - "description": "Project's uid if the resource is under a project", - "type": "string" - }, - "tenantUid": { - "description": "Tenant's uid", - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice", - "type": "object", - "properties": { - "cloudProperties": { - "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", - "type": "object", - "properties": { - "vsphere": { - "description": "Vsphere cloud properties of edge host", - "properties": { - "datacenters": { - "type": "array", - "items": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "EdgeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "disableAutoRegister": { - "description": "Set to true if auto register is disabled for the device", - "type": "boolean", - "x-omitempty": false - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "hostAuthToken": { - "description": "HostAuthToken to authorize auto registration", - "type": "string", - "x-omitempty": false - }, - "hostChecksum": { - "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", - "type": "string", - "x-omitempty": false - }, - "hostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostPairingKey": { - "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS", - "type": "string", - "format": "password", - "x-omitempty": false - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string" - }, - "macAddress": { - "description": "Mac address of edgehost", - "type": "string", - "x-omitempty": false - }, - "project": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "properties": { - "description": "Additional properties of edge host", - "properties": { - "networks": { - "type": "array", - "items": { - "description": "Network defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "storagePools": { - "type": "array", - "items": { - "description": "StoragePool is the storage pool for the vm image", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "service": { - "description": "ServiceSpec defines the specification of service registering edge", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "type": { - "description": "Deprecated. Cloudtype of the provisioned edge host", - "type": "string", - "enum": [ - "libvirt", - "vsphere", - "edge-native" - ] - }, - "version": { - "type": "string" - } - } - }, - "status": { - "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice", - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "serviceAuthToken": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/backup": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the cluster backup result", - "operationId": "v1ClusterFeatureBackupGet", - "parameters": [ - { - "type": "string", - "name": "backupRequestUid", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster Backup", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster Backup Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "config": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - }, - "status": { - "description": "Cluster Backup Status", - "properties": { - "clusterBackupStatuses": { - "type": "array", - "items": { - "description": "Cluster Backup Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupConfig": { - "description": "Backup config", - "properties": { - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "backupLocationConfig": { - "description": "Backup location configuration", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupRequestUid": { - "type": "string" - }, - "backupStatusMeta": { - "type": "array", - "items": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "restoreStatusMeta": { - "type": "array", - "items": { - "description": "Backup restored status", - "properties": { - "backupName": { - "type": "string" - }, - "destinationClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "restoreState": { - "type": "string" - } - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update cluster backup settings", - "operationId": "v1ClusterFeatureBackupUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create cluster backup settings", - "operationId": "v1ClusterFeatureBackupCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Reset cluster backup schedule settings", - "operationId": "v1ClusterFeatureBackupScheduleReset", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/backup/onDemand": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create on demand cluster backup", - "operationId": "v1ClusterFeatureBackupOnDemandCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/backup/{backupName}/request/{requestUid}": { - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Delete cluster backup", - "operationId": "v1ClusterFeatureBackupDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "backupName", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "requestUid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the compliance scan of cluster, if driverType is provided then specific status of driverType will be returned", - "operationId": "v1ClusterFeatureComplianceScanGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster Compliance Scan", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverSpec": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan driver spec", - "properties": { - "config": { - "description": "Compliance Scan config", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "isClusterConfig": { - "type": "boolean" - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update cluster compliance scan settings", - "operationId": "v1ClusterFeatureComplianceScanUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create cluster compliance scan", - "operationId": "v1ClusterFeatureComplianceScanCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the compliance scan log by cluster uid and driver type", - "operationId": "v1ClusterFeatureComplianceScanLogsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster compliance scan Logs", - "properties": { - "kubeBenchLogs": { - "type": "array", - "items": { - "description": "Cluster compliance scan KubeBench Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeBench Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "kubeHunterLogs": { - "type": "array", - "items": { - "description": "Cluster compliance scan KubeHunter Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeHunter Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilites": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "sonobuoyLogs": { - "type": "array", - "items": { - "description": "Cluster compliance scan Sonobuoy Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Sonobuoy Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "syftLogs": { - "type": "array", - "items": { - "description": "Cluster Compliance Scan Syft Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Syft Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Report", - "properties": { - "dependencies": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanContext": { - "description": "Compliance Scan Syft Context", - "properties": { - "format": { - "type": "string" - }, - "labelSelector": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeBench": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the KubeBench compliance scan log by uid", - "operationId": "v1ClusterFeatureScanKubeBenchLogUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "KubeBench response", - "required": [ - "requestUid", - "status", - "reports" - ], - "properties": { - "reports": { - "type": "object", - "additionalProperties": { - "description": "KubeBench report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "KubeBench log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeHunter": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the KubeHunter compliance scan log by uid", - "operationId": "v1ClusterFeatureScanKubeHunterLogUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "KubeHunter response", - "required": [ - "requestUid", - "status", - "reports" - ], - "properties": { - "reports": { - "type": "object", - "additionalProperties": { - "description": "KubeHunter report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "KubeHunter log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "description": "KubeHunter vulnerability data", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/sonobuoy": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the Sonobuoy compliance scan log by uid", - "operationId": "v1ClusterFeatureScanSonobuoyLogUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Sonobuoy response", - "required": [ - "requestUid", - "status", - "reports" - ], - "properties": { - "reports": { - "type": "object", - "additionalProperties": { - "description": "Sonobuoy report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Sonobuoy log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/syft": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the Syft compliance scan log by uid", - "operationId": "v1ClusterFeatureScanSyftLogUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Syft response", - "required": [ - "requestUid", - "status", - "report" - ], - "properties": { - "report": { - "description": "Syft report", - "properties": { - "batchNo": { - "type": "integer", - "format": "int32" - }, - "batchSize": { - "type": "integer", - "format": "int32" - }, - "dependencies": { - "type": "array", - "items": { - "description": "Syft dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "sbom": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Syft vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Syft vulnerability summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}": { - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Delete the compliance scan log by uid", - "operationId": "v1ClusterFeatureComplianceScanLogDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeBench": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the KubeBench compliance scan log by uid", - "operationId": "v1ClusterFeatureKubeBenchLogGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster compliance scan KubeBench Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeBench Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "reportId", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeHunter": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the KubeHunter compliance scan log by uid", - "operationId": "v1ClusterFeatureKubeHunterLogGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster compliance scan KubeHunter Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeHunter Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilites": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "reportId", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/sonobuoy": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the Sonobuoy compliance scan log by uid", - "operationId": "v1ClusterFeatureSonobuoyLogGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster compliance scan Sonobuoy Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Sonobuoy Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "reportId", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the Syft compliance scan log by uid", - "operationId": "v1ClusterFeatureSyftLogGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster Compliance Scan Syft Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Syft Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Report", - "properties": { - "dependencies": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanContext": { - "description": "Compliance Scan Syft Context", - "properties": { - "format": { - "type": "string" - }, - "labelSelector": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft/sbom": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Returns the image sbom of syft scan log of cluster", - "operationId": "v1SyftScanLogImageSBOMGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "image", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/{driver}/download": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Downloads the driver cluster logs", - "operationId": "v1ClusterFeatureDriverLogDownload", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "file" - }, - "headers": { - "Content-Disposition": { - "type": "string" - }, - "Content-Type": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "logUid", - "in": "path", - "required": true - }, - { - "enum": [ - "kubeBench", - "kubeHunter", - "sonobuoy", - "syft" - ], - "type": "string", - "name": "driver", - "in": "path", - "required": true - }, - { - "type": "string", - "default": "pdf", - "name": "fileFormat", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/features/complianceScan/onDemand": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create on demand cluster compliance scan", - "operationId": "v1ClusterFeatureComplianceScanOnDemandCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster compliance scan on demand configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan config for kube bench driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan config for kube hunter driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan config for sonobuoy driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "syft": { - "description": "Cluster compliance scan config for syft driver", - "properties": { - "config": { - "description": "Cluster compliance scan specification", - "properties": { - "format": { - "type": "string", - "enum": [ - "cyclonedx-json", - "github-json", - "spdx-json", - "syft-json" - ] - }, - "labelSelector": { - "type": "string" - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "cluster", - "namespace", - "label-selector", - "pod" - ] - } - } - }, - "runScan": { - "type": "boolean" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/helmCharts": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the installed helm charts of a specified cluster", - "operationId": "v1ClusterFeatureHelmChartsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster helm charts metadata", - "properties": { - "charts": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster helm chart metadata", - "properties": { - "localName": { - "type": "string" - }, - "matchedRegistries": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster helm registry information", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/logFetcher": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the log fetcher for cluster", - "operationId": "v1ClusterFeatureLogFetcherGet", - "parameters": [ - { - "type": "string", - "name": "requestId", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster Log Fetcher", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster Log Fetcher Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "log": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster Log Fetcher Status", - "properties": { - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create the log fetcher for cluster", - "operationId": "v1ClusterFeatureLogFetcherCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster Log Fetcher Request", - "properties": { - "duration": { - "description": "Duration for which log is requested", - "type": "integer", - "format": "int64", - "default": 10 - }, - "k8s": { - "description": "Cluster Log Fetcher K8s", - "properties": { - "labelSelector": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "mode": { - "description": "Accepted Values - [\"cluster\", \"app\"]. if \"app\" then logs will be fetched from the virtual cluster", - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "app" - ] - }, - "noOfLines": { - "description": "No of lines of logs requested", - "type": "integer", - "format": "int64", - "default": 1000 - }, - "node": { - "description": "Cluster Log Fetcher Node Request", - "properties": { - "logs": { - "description": "Array of logs", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid for which log is requested", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/manifests": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the installed manifests of a specified cluster", - "operationId": "v1ClusterFeatureManifestsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster manifests information", - "properties": { - "manifests": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster manifest information", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/restore": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the cluster restore of cluster", - "operationId": "v1ClusterFeatureRestoreGet", - "parameters": [ - { - "type": "string", - "name": "restoreRequestUid", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster Restore", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster Restore Spec", - "properties": { - "clusterUid": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster Restore Status", - "properties": { - "clusterRestoreStatuses": { - "type": "array", - "items": { - "description": "Cluster Restore Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupName": { - "type": "string" - }, - "backupRequestUid": { - "type": "string" - }, - "restoreRequestUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Restore status meta", - "properties": { - "isSucceeded": { - "type": "boolean" - }, - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "sourceClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/features/restore/onDemand": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create on demand cluster restore", - "operationId": "v1ClusterFeatureRestoreOnDemandCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster restore config", - "required": [ - "backupRequestUid", - "backupName", - "destinationClusterUid" - ], - "properties": { - "backupName": { - "type": "string" - }, - "backupRequestUid": { - "type": "string" - }, - "destinationClusterUid": { - "type": "string" - }, - "includeClusterResources": { - "type": "boolean" - }, - "includeNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "preserveNodePorts": { - "type": "boolean" - }, - "restorePVs": { - "type": "boolean" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/import/manifest": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's import manifest file", - "operationId": "v1SpectroClustersUidImportManifest", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "download file", - "schema": { - "type": "string", - "format": "binary" - }, - "headers": { - "Content-Disposition": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/import/upgrade": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Upgrade the specified imported read only cluster with full permissions", - "operationId": "v1SpectroClustersUidImportUpgradePatch", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/k8certificates": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get K8Certificate for spectro cluster", - "operationId": "v1SpectroClustersK8Certificate", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "K8 Certificates for all the cluster's control plane nodes", - "type": "object", - "properties": { - "machineCertificates": { - "type": "array", - "items": { - "description": "K8 Certificates for control plane nodes", - "type": "object", - "properties": { - "certificateAuthorities": { - "description": "Applicable certificate authorities", - "type": "array", - "items": { - "description": "Certificate Authority", - "type": "object", - "properties": { - "certificates": { - "type": "array", - "items": { - "description": "Certificate details", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/k8certificates/renew": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Sets the cluster control plane nodes Kubernetes certificates for renewal", - "operationId": "v1SpectroClustersCertificatesRenew", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/kubectl/redirect": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's kube config file", - "operationId": "V1SpectroClustersUidKubeCtlRedirect", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Active resources of tenant", - "type": "object", - "properties": { - "redirectUri": { - "type": "string" - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/location": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Associate the assets for the cluster", - "operationId": "v1SpectroClustersUidLocationPut", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster location", - "type": "object", - "properties": { - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/metadata": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the specified spectro cluster metadata", - "operationId": "v1SpectroClustersUidMetadataUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Resource metadata", - "type": "object", - "required": [ - "metadata" - ], - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/namespaces": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns available namespaces for the cluster", - "operationId": "v1ClusterNamespacesGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster's available namespaces", - "properties": { - "namespaces": { - "type": "array", - "items": { - "description": "Cluster's namespace", - "properties": { - "namespace": { - "type": "string" - }, - "pvcCount": { - "type": "number", - "format": "int32" - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": false, - "name": "skipEmptyNamespaces", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/oidc": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns k8s spectrocluster oidc", - "operationId": "V1SpectroClustersUidOIDC", - "parameters": [ - { - "type": "string", - "description": "spc uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "issuerTls": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/oidc/dashboard/url": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns k8s dashboard url", - "operationId": "V1SpectroClustersUidOIDCDashboardUrl", - "parameters": [ - { - "type": "string", - "description": "spc uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Service version information", - "type": "object", - "properties": { - "url": { - "type": "string" - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/pack/manifests/{manifestUid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's manifest", - "operationId": "v1SpectroClustersUidPackManifestsUidGet", - "parameters": [ - { - "type": "string", - "description": "cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "manifest uid which is part of the pack ref", - "name": "manifestUid", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": false, - "description": "resolve pack manifest values if set to true", - "name": "resolveManifestValues", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Pack manifest content", - "schema": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "properties": { - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/pack/properties": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get specified cluster pack properties", - "operationId": "v1SpectroClustersUidPackProperties", - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Pack layer", - "name": "layer", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Pack values yaml field path", - "name": "fieldPath", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Pack name", - "name": "name", - "in": "query" - }, - { - "type": "boolean", - "default": true, - "description": "Is the macros need to be resolved", - "name": "resolveMacros", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Cluster's pack properties response", - "schema": { - "description": "Cluster pack properties response", - "type": "object", - "properties": { - "yaml": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/packRefs": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the cluster's pack references", - "operationId": "v1SpectroClustersPacksRefUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster input for notification update", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile notification update request payload", - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - }, - "spcApplySettings": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "notify", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/packs/resolvedValues": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's packs resolved values", - "operationId": "v1SpectroClustersUidPacksResolvedValuesGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster profiles resolved values response", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile resolved pack values", - "properties": { - "resolved": { - "description": "Cluster profile pack resolved values", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster profiles param reference entity", - "type": "object", - "properties": { - "references": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - ] - }, - "/v1/spectroclusters/{uid}/packs/status": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Patch update specified cluster's packs status", - "operationId": "v1SpectroClustersUidPacksStatusPatch", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "ReadyForInstall", - "Installed", - "Ready", - "Error", - "UpgradeAvailable", - "WaitingForOtherLayers" - ] - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "profileUid": { - "description": "Cluster profile uid", - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/profileUpdates": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the profile updates of a specified cluster", - "operationId": "v1SpectroClustersGetProfileUpdates", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/profiles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the associated profiles of a specified cluster", - "operationId": "v1SpectroClustersGetProfiles", - "parameters": [ - { - "type": "string", - "description": "includes pack meta such as schema, presets", - "name": "includePackMeta", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster profile spec response", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile packs object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "version": { - "description": "Cluster profile version", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Associate cluster profiles to the specified cluster", - "operationId": "v1SpectroClustersUpdateProfiles", - "parameters": [ - { - "type": "boolean", - "default": false, - "description": "Resolve pending cluster notification if set to true", - "name": "resolveNotification", - "in": "query" - }, - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "spcApplySettings": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Remove cluster profiles from the specified cluster", - "operationId": "v1SpectroClustersDeleteProfiles", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "profileUids": { - "description": "Cluster's profile uid list", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Patch cluster profiles to the specified cluster", - "operationId": "v1SpectroClustersPatchProfiles", - "parameters": [ - { - "type": "boolean", - "default": false, - "description": "Resolve pending cluster notification if set to true", - "name": "resolveNotification", - "in": "query" - }, - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "spcApplySettings": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/profiles/packs/manifests": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the associated profile's pack manifests of a specified cluster", - "operationId": "v1SpectroClustersGetProfilesPacksManifests", - "parameters": [ - { - "type": "string", - "description": "Includes pack meta such as schema, presets", - "name": "includePackMeta", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Resolve pack macro variables if set to true", - "name": "resolveMacros", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack manifests spec", - "type": "object", - "properties": { - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "Manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/config": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified cluster's profile pack configuration", - "operationId": "v1SpectroClustersUidProfilesUidPacksConfigGet", - "parameters": [ - { - "type": "string", - "description": "cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "profile uid", - "name": "profileUid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "pack name", - "name": "packName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "An array of cluster pack values", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack configuration", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "associatedObject": { - "type": "string" - }, - "isValuesOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "digest": { - "type": "string" - }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "parentUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/manifests": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the associated profiles pack manifests of the specified cluster", - "operationId": "v1SpectroClustersProfilesUidPackManifestsGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Manifests array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "properties": { - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates cluster profiles pack manifests to the specified cluster", - "operationId": "v1SpectroClustersProfilesUidPackManifestsUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Pack manifests input params", - "properties": { - "manifests": { - "description": "Pack manifests array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Cluster profile uid", - "name": "profileUid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Name of the pack", - "name": "packName", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/rate": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the estimated rate of the specified cluster", - "operationId": "v1SpectroClustersUidRate", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Cluster estimated rate information", - "type": "object", - "properties": { - "machinePools": { - "type": "array", - "items": { - "description": "Machine pool estimated rate information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nodesCount": { - "type": "integer", - "format": "int32" - }, - "rate": { - "description": "Cloud estimated rate information", - "type": "object", - "properties": { - "compute": { - "description": "Compute estimated rate information", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "type": { - "type": "string" - } - } - }, - "storage": { - "type": "array", - "items": { - "description": "Storage estimated rate information", - "type": "object", - "properties": { - "iops": { - "type": "number", - "format": "float64" - }, - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "sizeGB": { - "type": "number", - "format": "float64" - }, - "throughput": { - "type": "number", - "format": "float64" - }, - "type": { - "type": "string" - } - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "name": { - "type": "string" - }, - "rate": { - "description": "Cluster total estimated rate information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "resourceMetadata": { - "description": "Cloud resource metadata", - "type": "object", - "properties": { - "instanceTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - }, - "storageTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "enum": [ - "hourly", - "monthly", - "yearly" - ], - "type": "string", - "default": "hourly", - "description": "Period type [hourly, monthly, yearly]", - "name": "periodType", - "in": "query" - } - ] - }, - "/v1/spectroclusters/{uid}/repave/approve": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the spectrocluster repave approve update", - "operationId": "v1SpectroClustersUidRepaveApproveUpdate", - "parameters": [ - { - "type": "string", - "description": "cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - } - }, - "/v1/spectroclusters/{uid}/repave/status": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the spectrocluster repave", - "operationId": "v1SpectroClustersUidRepaveGet", - "parameters": [ - { - "type": "string", - "description": "cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Returns cluster repave status", - "schema": { - "description": "Spectro cluster repave status information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "reasons": { - "description": "Spectro cluster repave reasons", - "type": "array", - "items": { - "description": "Cluster repave reason description", - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "pack": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - } - }, - "source": { - "type": "string", - "enum": [ - "user", - "hubble", - "palette", - "stylus" - ] - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "status": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "repaveTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/reset": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "reset the cluster s by deleting machine pools and condtions", - "operationId": "V1SpectroClustersUidReset", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the cluster's status", - "operationId": "v1SpectroClustersUidStatus", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Spectrocluster status entity", - "type": "object", - "properties": { - "status": { - "description": "Spectrocluster state entity", - "type": "object", - "properties": { - "state": { - "description": "Spectrocluster state", - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/condition": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster status condition", - "operationId": "v1SpectroClustersUpdateStatusCondition", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/conditions": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster status conditions", - "operationId": "v1SpectroClustersUpdateStatusConditions", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/endpoints": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster's service endpoints information", - "operationId": "v1SpectroClustersUpdateStatusEndpoints", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/imported": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster status as imported", - "operationId": "v1SpectroClustersUpdateStatusImported", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/services": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified cluster's services information", - "operationId": "v1SpectroClustersUpdateStatusServices", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/spcApply": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the SPC apply information for the agent", - "operationId": "v1SpectroClustersUidStatusSpcApplyGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Set the CanBeApplied to true on the spcApply status. CanBeApplied indicates the agent to orchestrate the spc changes", - "operationId": "v1SpectroClustersUidStatusSpcApply", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/spcApply/patchTime": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the agent patch time for the SPC changes", - "operationId": "v1SpectroClustersUidStatusSpcPatchTime", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "clusterHash": { - "type": "string" - }, - "patchTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/status/upgrades": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the cluster's upgrade status", - "operationId": "v1SpectroClustersUidUpgradesPut", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster status upgrades", - "type": "object", - "properties": { - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/validate/packs": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates cluster packs", - "operationId": "v1SpectroClustersUidValidatePacks", - "parameters": [ - { - "type": "string", - "description": "cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster entity for pack refs validate", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Cluster packs validation response", - "schema": { - "description": "Cluster validator response", - "type": "object", - "properties": { - "machinePools": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/validate/repave": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates if cluster gets repaved for the specified packs", - "operationId": "v1SpectroClustersUidValidateRepave", - "parameters": [ - { - "type": "string", - "description": "cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster entity for pack refs validate", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "Cluster repave validation response", - "schema": { - "description": "Cluster repave validation response", - "type": "object", - "properties": { - "isRepaveRequired": { - "description": "If true then the pack changes can cause cluster repave", - "type": "boolean", - "x-omitempty": false - }, - "reasons": { - "type": "array", - "items": { - "description": "Cluster repave reason description", - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "pack": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "/v1/spectroclusters/{uid}/variables": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieve a list of variables associated with the cluster", - "operationId": "v1SpectroClustersUidVariablesGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "type": "object", - "properties": { - "variables": { - "description": "List of unique variable fields with schema constraints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Unique variable field with schema definition", - "type": "object", - "required": [ - "name" - ], - "properties": { - "defaultValue": { - "description": "The default value of the variable", - "type": "string" - }, - "description": { - "description": "Variable description", - "type": "string" - }, - "displayName": { - "description": "Unique display name of the variable", - "type": "string" - }, - "format": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "hidden": { - "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "immutable": { - "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "isSensitive": { - "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Variable name", - "type": "string" - }, - "regex": { - "description": "Regular expression pattern which the variable value must match", - "type": "string" - }, - "required": { - "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid for which variables need to be retrieved", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the list of virtual machines", - "operationId": "v1SpectroClustersVMList", - "parameters": [ - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace", - "name": "namespace", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "name": "limit", - "in": "query" - }, - { - "type": "string", - "description": "continue token to paginate the subsequent data items", - "name": "continue", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "VirtualMachineList is a list of virtual machines", - "type": "object", - "required": [ - "items" - ], - "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.", - "type": "string" - }, - "items": { - "type": "array", - "items": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests 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": { - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "type": "object", - "properties": { - "continue": { - "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", - "type": "string" - }, - "remainingItemCount": { - "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", - "type": "integer", - "format": "int64" - }, - "resourceVersion": { - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", - "type": "string" - }, - "selfLink": { - "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create virtual machine", - "operationId": "v1SpectroClustersVMCreate", - "parameters": [ - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - }, - { - "name": "body", - "in": "body", - "schema": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/snapshot": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the list of snapshots of given namespaces", - "operationId": "v1ClusterVMSnapshotsList", - "parameters": [ - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "vmName is comma separated value (ex: name1,name2).", - "name": "vmName", - "in": "query" - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace", - "name": "namespace", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "name": "limit", - "in": "query" - }, - { - "type": "string", - "description": "continue token to paginate the subsequent data items", - "name": "continue", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources", - "type": "object", - "required": [ - "metadata", - "items" - ], - "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" - }, - "items": { - "type": "array", - "items": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests 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": { - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "type": "object", - "properties": { - "continue": { - "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", - "type": "string" - }, - "remainingItemCount": { - "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", - "type": "integer", - "format": "int64" - }, - "resourceVersion": { - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", - "type": "string" - }, - "selfLink": { - "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get virtual machine", - "operationId": "v1SpectroClustersVMGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified virtual machine of the cluster", - "operationId": "v1SpectroClustersVMUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the virtual machine", - "operationId": "v1SpectroClustersVMDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/addVolume": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Add volume to the virtual machine instance", - "operationId": "v1SpectroClustersVMAddVolume", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "required": [ - "addVolumeOptions" - ], - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "dataVolumeTemplate": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - }, - "persist": { - "description": "If 'true' add the disk to the Virtual Machine \u0026 Virtual Machine Instance, else add the disk to the Virtual Machine Instance only", - "type": "boolean" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/clone": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Clone virtual machine", - "operationId": "v1SpectroClustersVMClone", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "required": [ - "cloneName" - ], - "properties": { - "annotationFilters": { - "description": "Annotation filters", - "type": "array", - "items": { - "type": "string" - } - }, - "cloneName": { - "description": "Cloning Virtual machine's name", - "type": "string" - }, - "labelFilters": { - "description": "Label filters", - "type": "array", - "items": { - "type": "string" - } - }, - "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" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/migrate": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Migrate the virtual machine", - "operationId": "v1SpectroClustersVMMigrate", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/pause": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Pause the virtual machine instance", - "operationId": "v1SpectroClustersVMPause", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/removeVolume": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Remove volume from the virtual machine instance", - "operationId": "v1SpectroClustersVMRemoveVolume", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "required": [ - "removeVolumeOptions" - ], - "properties": { - "persist": { - "description": "If 'true' remove the disk from the Virtual Machine \u0026 Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only", - "type": "boolean" - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/restart": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Restart the virtual machine", - "operationId": "v1SpectroClustersVMRestart", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/resume": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Resume the virtual machine instance", - "operationId": "v1SpectroClustersVMResume", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create snapshot of virtual machine", - "operationId": "v1VMSnapshotCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name of virtual machine", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot/{snapshotName}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get virtual machine snapshot", - "operationId": "v1VMSnapshotGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified snapshot of a virtual machine", - "operationId": "v1VMSnapshotUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Delete the snapshot of virtual machine", - "operationId": "v1VMSnapshotDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Snapshot name", - "name": "snapshotName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/start": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Start the virtual machine", - "operationId": "v1SpectroClustersVMStart", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/vms/{vmName}/stop": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Stop the virtual machine", - "operationId": "v1SpectroClustersVMStop", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Virtual Machine name", - "name": "vmName", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Namespace name", - "name": "namespace", - "in": "query", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/workloads/sync": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Sync specified cluster workload", - "tags": [ - "v1" - ], - "summary": "Sync specified cluster workload", - "operationId": "v1SpectroClustersUidWorkloadsSync", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/spectroclusters/{uid}/workloads/{workloadKind}/sync": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Sync specified cluster workload", - "operationId": "v1SpectroClustersUidWorkloadsKindSync", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "202": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Cluster uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "enum": [ - "namespace", - "pod", - "deployment", - "statefulset", - "daemonset", - "job", - "cronjob", - "rolebinding", - "clusterrolebinding" - ], - "type": "string", - "description": "Workload kind", - "name": "workloadKind", - "in": "path", - "required": true - } - ] - }, - "/v1/system/config/reverseproxy": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1", - "system", - "private", - "docs-show" - ], - "summary": "get the system config reverse proxy", - "operationId": "V1SystemConfigReverseProxyGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "system config reverse proxy", - "properties": { - "caCert": { - "type": "string" - }, - "clientCert": { - "type": "string" - }, - "clientKey": { - "type": "string" - }, - "port": { - "type": "integer" - }, - "protocol": { - "type": "string", - "enum": [ - "http", - "https" - ] - }, - "server": { - "type": "string" - }, - "vHostPort": { - "type": "integer" - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1", - "system", - "private", - "docs-show" - ], - "summary": "updates the system config reverse proxy", - "operationId": "V1SystemConfigReverseProxyUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "system config reverse proxy", - "properties": { - "caCert": { - "type": "string" - }, - "clientCert": { - "type": "string" - }, - "clientKey": { - "type": "string" - }, - "port": { - "type": "integer" - }, - "protocol": { - "type": "string", - "enum": [ - "http", - "https" - ] - }, - "server": { - "type": "string" - }, - "vHostPort": { - "type": "integer" - } - } - } - } - ], - "responses": { - "204": { - "description": "(empty)", - "schema": { - "description": "The resource was updated successfully" - } - } - } - } - }, - "/v1/system/passwords/blocklist": { - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1", - "system", - "docs-show" - ], - "summary": "Delete a list of block listed passwords", - "operationId": "V1PasswordsBlockListDelete", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "List of blocklisted passwords", - "type": "object", - "properties": { - "spec": { - "description": "List of block listed passwords", - "type": "object", - "properties": { - "passwords": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1", - "system", - "docs-show" - ], - "summary": "List of block listed passwords", - "operationId": "V1PasswordsBlockListUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "List of blocklisted passwords", - "type": "object", - "properties": { - "spec": { - "description": "List of block listed passwords", - "type": "object", - "properties": { - "passwords": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "(empty)", - "schema": { - "description": "The resource was updated successfully" - } - } - } - } - }, - "/v1/teams": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of teams", - "operationId": "v1TeamsList", - "parameters": [ - { - "type": "string", - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "name": "fields", - "in": "query" - }, - { - "type": "string", - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "name": "filters", - "in": "query" - }, - { - "type": "string", - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "name": "orderBy", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "name": "offset", - "in": "query" - }, - { - "type": "string", - "description": "continue token to paginate the subsequent data items", - "name": "continue", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "An array of teams", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Creates a team with the specified users and roles", - "operationId": "v1TeamsCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/teams/summary": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of teams summary with provided filter spec", - "operationId": "v1TeamsSummaryGet", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Teams filter summary spec", - "properties": { - "filter": { - "description": "Teams filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - } - } - ], - "responses": { - "200": { - "description": "An array of teams summary items", - "schema": { - "description": "Returns Team summary", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Team summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - } - } - } - } - } - } - }, - "/v1/teams/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the sepcified team", - "operationId": "v1TeamsUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the sepcified team", - "operationId": "v1TeamsUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the specified team", - "operationId": "v1TeamsUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Patches the specified team", - "operationId": "v1TeamsUidPatch", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/teams/{uid}/projects": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified team's project and roles data", - "operationId": "v1TeamsProjectRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the projects and roles for the specified team", - "operationId": "v1TeamsProjectRolesPut", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "projectUid": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/teams/{uid}/resourceRoles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns resource roles for team", - "tags": [ - "v1" - ], - "summary": "Returns the specified individual and resource roles for a team", - "operationId": "v1TeamsUidResourceRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "resourceRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Resource roles added to specific team", - "tags": [ - "v1" - ], - "summary": "Add resource roles for team", - "operationId": "v1TeamsUidResourceRolesCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/teams/{uid}/resourceRoles/{resourceRoleUid}": { - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deleted the resource roles from team", - "operationId": "v1TeamsUidResourceRolesUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Specific resource roles fo team is updated", - "tags": [ - "v1" - ], - "summary": "Updates the resource roles for team", - "operationId": "v1TeamsResourceRolesUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "resourceRoleUid", - "in": "path", - "required": true - } - ] - }, - "/v1/teams/{uid}/roles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified team's tenant roles", - "operationId": "V1TeamsUidTenantRolesGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the tenant roles of the specified team", - "operationId": "V1TeamsUidTenantRolesUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/address": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant address", - "operationId": "v1PatchTenantAddress", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant Address", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/assets/certs": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "lists the certificates for the tenant", - "operationId": "V1TenantUIdAssetsCertsList", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tenant cert", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "create the tenant certificate", - "operationId": "V1TenantUidAssetsCertsCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "tenant cert", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/assets/certs/{certificateUid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the ca certificate for the tenant", - "operationId": "V1TenantUidAssetsCertsUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "tenant cert", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "updates the tenant certificate", - "operationId": "V1TenantUidAssetsCertsUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "tenant cert", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "deletes the tenant certificate", - "operationId": "V1TenantUidAssetsCertsUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "certificateUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/assets/dataSinks": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns data sink config of tenant", - "operationId": "V1TenantUidAssetsDataSinksGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Data sink", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "auditDataSinks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "cloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "cloudwatch" - ] - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "updates the tenant data sink config", - "operationId": "V1TenantUidAssetsDataSinksUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Data sink", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "auditDataSinks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "cloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "cloudwatch" - ] - } - } - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "create data sink config", - "operationId": "V1TenantUidAssetsDataSinksCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Data sink", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "auditDataSinks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "cloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "cloudwatch" - ] - } - } - } - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "deletes the tenant data sink config", - "operationId": "V1TenantUidAssetsDataSinksDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/authTokenSettings": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant auth token settings", - "operationId": "v1TenantUidAuthTokenSettingsGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "System auth token settings", - "properties": { - "expiryTimeMinutes": { - "description": "Auth token expiry time in minutes", - "type": "integer", - "format": "int32", - "maximum": 1440, - "minimum": 15, - "x-omitempty": false - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant auth token settings", - "operationId": "v1TenantUidAuthTokenSettingsUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "System auth token settings", - "properties": { - "expiryTimeMinutes": { - "description": "Auth token expiry time in minutes", - "type": "integer", - "format": "int32", - "maximum": 1440, - "minimum": 15, - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/contract/accept": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Tenant to accept the contract agreement", - "operationId": "v1TenantsUidContractAccept", - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/creditAccount/aws": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the credit accounts for the tenants with free tier access", - "operationId": "v1TenantsCreditAccountGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "creditLimitInDollars": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "creditUsedInDollars": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "loginCredentials": { - "type": "object", - "properties": { - "iamUser": { - "type": "string" - }, - "password": { - "type": "string", - "format": "password" - } - } - }, - "userCloudAccount": { - "properties": { - "accountId": { - "type": "string" - }, - "cloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the aws credit account for tenants", - "operationId": "v1TenantsCreditAccountDelete", - "parameters": [ - { - "type": "boolean", - "default": false, - "name": "forceDelete", - "in": "query" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/domains": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "retrieves the domains for tenant", - "operationId": "V1TenantUidDomainsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Tenant domains", - "type": "object", - "properties": { - "domains": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "creates or updates domains for tenant", - "operationId": "V1TenantUidDomainsUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant domains", - "type": "object", - "properties": { - "domains": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/emailId": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant emailId", - "operationId": "v1PatchTenantEmailId", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant EmailId", - "type": "object", - "properties": { - "emailId": { - "type": "string" - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/freemium": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant level freemium configuration", - "operationId": "v1TenantFreemiumGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Tenant freemium configuration", - "properties": { - "activeClustersLimit": { - "type": "integer", - "x-omitempty": false - }, - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "overageUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "totalUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant freemium configuration", - "operationId": "v1TenantFreemiumUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant freemium configuration", - "properties": { - "activeClustersLimit": { - "type": "integer", - "x-omitempty": false - }, - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "overageUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "totalUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/freemiumUsage": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant freemium usage", - "operationId": "v1TenantFreemiumUsageGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "limit": { - "type": "object", - "properties": { - "activeClusters": { - "type": "integer", - "x-omitempty": false - }, - "overageUsage": { - "type": "number", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "usage": { - "type": "object", - "properties": { - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns a specified invoice", - "operationId": "v1InvoicesUidGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Invoice object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Invoice specification", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "billingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "credits": { - "description": "Invoice credits object", - "properties": { - "alloyFreeCredits": { - "description": "Credits allocated for import clusters", - "type": "number", - "format": "int64" - }, - "pureFreeCredits": { - "description": "Credits allocated for managed clusters", - "type": "number", - "format": "int64" - } - } - }, - "envType": { - "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", - "type": "string" - }, - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "paymentUnit": { - "type": "string", - "enum": [ - "usd" - ] - }, - "plan": { - "description": "Invoice plan object", - "properties": { - "freeCredits": { - "description": "List of free credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - }, - "plantype": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "slaCredits": { - "description": "List of SLA credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - } - } - } - } - }, - "status": { - "description": "Invoice Status", - "properties": { - "billableAmount": { - "description": "Total billable amount", - "type": "number", - "format": "float64" - }, - "productInvoice": { - "description": "Product invoice object", - "properties": { - "alloy": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "projects": { - "description": "List of project invoices", - "type": "array", - "items": { - "description": "Invoice project object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "projectName": { - "description": "Name of the project", - "type": "string" - }, - "projectUid": { - "description": "Project identifier", - "type": "string" - }, - "usage": { - "description": "Project usage object", - "properties": { - "alloy": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - } - }, - "states": { - "description": "List of invoice states", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Invoice state object", - "properties": { - "paymentMsg": { - "description": "Payment status message", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Paid", - "PaymentPending", - "PaymentInProgress", - "PaymentFailed" - ] - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "stripeInvoiceId": { - "description": "Stripe invoice uid", - "type": "string" - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the tenant uid", - "name": "tenantUid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Specify the invoice uid", - "name": "invoiceUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/invoice/pdf": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Downloads the specified invoice report", - "operationId": "V1InvoiceUidReportInvoicePdf", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "file" - }, - "headers": { - "Content-Disposition": { - "type": "string" - }, - "Content-Type": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the tenant uid", - "name": "tenantUid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Specify the invoice uid", - "name": "invoiceUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/pdf": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Downloads the specified monthly invoice report", - "operationId": "V1InvoiceUidReportPdf", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "file" - }, - "headers": { - "Content-Disposition": { - "type": "string" - }, - "Content-Type": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the tenant uid", - "name": "tenantUid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Specify the invoice uid", - "name": "invoiceUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/usage/pdf": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "produces": [ - "application/octet-stream" - ], - "tags": [ - "v1" - ], - "summary": "Downloads the specified tenant usage", - "operationId": "V1InvoiceUidReportUsagePdf", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "file" - }, - "headers": { - "Content-Disposition": { - "type": "string" - }, - "Content-Type": { - "type": "string" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the tenant uid", - "name": "tenantUid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Specify the invoice uid", - "name": "invoiceUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/loginBanner": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant login banner settings", - "operationId": "v1TenantUidLoginBannerGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "properties": { - "Message": { - "description": "Login banner message displayed to the user", - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "description": "Set to 'true' if login banner has to be displayed for user", - "type": "boolean", - "x-omitempty": false - }, - "title": { - "description": "Banner title displayed to the user", - "type": "string", - "x-omitempty": false - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant login banner settings", - "operationId": "v1TenantUidLoginBannerUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "Message": { - "description": "Login banner message displayed to the user", - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "description": "Set to 'true' if login banner has to be displayed for user", - "type": "boolean", - "x-omitempty": false - }, - "title": { - "description": "Banner title displayed to the user", - "type": "string", - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/macros": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "List the macros of the specified tenant", - "operationId": "v1TenantsUidMacrosList", - "responses": { - "200": { - "description": "OK", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the macros of the specified tenant", - "operationId": "v1TenantsUidMacrosUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create or add new macros for the specified tenant", - "operationId": "v1TenantsUidMacrosCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Delete the macros for the specified tenant by given macro name", - "operationId": "v1TenantsUidMacrosDeleteByMacroName", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the macros for the specified tenant by given macro name", - "operationId": "v1TenantsUidMacrosUpdateByMacroName", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/oidc/config": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the oidc Spec for tenant", - "operationId": "V1TenantUidOidcConfigGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Tenant", - "type": "object", - "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuerTls": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "logoutUrl": { - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "scopesDelimiter": { - "type": "string", - "x-omitempty": false - }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Associates the oidc Spec for the tenant", - "operationId": "V1TenantUidOidcConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant", - "type": "object", - "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuerTls": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "logoutUrl": { - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "scopesDelimiter": { - "type": "string", - "x-omitempty": false - }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/password/policy": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "creates or updates a password policy for tenant", - "operationId": "V1TenantUidPasswordPolicyUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant Password Policy Entity", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "expiryDurationInDays": { - "type": "integer" - }, - "firstReminderInDays": { - "type": "integer" - }, - "isRegex": { - "type": "boolean" - }, - "minLength": { - "type": "integer" - }, - "minNumOfBlockLetters": { - "type": "integer" - }, - "minNumOfDigits": { - "type": "integer" - }, - "minNumOfSmallLetters": { - "type": "integer" - }, - "minNumOfSpecialCharacters": { - "type": "integer" - }, - "regex": { - "type": "string" - }, - "updateTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/preferences/clusterGroup": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get is cluster group enabled for a specific tenant", - "operationId": "V1TenantPrefClusterGroupGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Enable or Disable cluster group for a tenant", - "properties": { - "hideSystemClusterGroups": { - "type": "boolean", - "x-omitempty": false - }, - "isClusterGroupEnabled": { - "description": "Deprecated. Use hideSystemClusterGroups field", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Enable or Disable cluster group for a specific tenant", - "operationId": "V1TenantPrefClusterGroupUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Enable or Disable cluster group for a tenant", - "properties": { - "hideSystemClusterGroups": { - "type": "boolean", - "x-omitempty": false - }, - "isClusterGroupEnabled": { - "description": "Deprecated. Use hideSystemClusterGroups field", - "type": "boolean", - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/preferences/clusterSettings": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant cluster settings", - "operationId": "v1TenantClusterSettingsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "properties": { - "nodesAutoRemediationSetting": { - "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/preferences/clusterSettings/nodesAutoRemediationSetting": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant clusters nodes auto remediation setting", - "operationId": "v1TenantClustersNodesAutoRemediationSettingUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/preferences/developerCredit": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get developer credit enabled for a specific tenant", - "operationId": "V1TenantDeveloperCreditGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "update developer credit for a specific tenant", - "operationId": "V1TenantDeveloperCreditUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/preferences/fips": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant fips settings", - "operationId": "v1TenantFipsSettingsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "FIPS configuration", - "properties": { - "fipsClusterFeatureConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "fipsClusterImportConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "fipsPackConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant fips setting", - "operationId": "v1TenantFipsSettingsUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "FIPS configuration", - "properties": { - "fipsClusterFeatureConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "fipsClusterImportConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "fipsPackConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/rateConfig": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get all rate config for public and private cloud", - "operationId": "v1RateConfigGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Rate config", - "properties": { - "aws": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "azure": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "custom": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Private cloud rate config", - "properties": { - "cloudType": { - "type": "string" - }, - "rateConfig": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - } - }, - "edge": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "edgeNative": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "gcp": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "generic": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "libvirt": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "maas": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "openstack": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "vsphere": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "updates the rate config for public and private cloud", - "operationId": "v1RateConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Rate config", - "properties": { - "aws": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "azure": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "custom": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Private cloud rate config", - "properties": { - "cloudType": { - "type": "string" - }, - "rateConfig": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - } - }, - "edge": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "edgeNative": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "gcp": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "generic": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "libvirt": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "maas": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "openstack": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "vsphere": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/resourceLimits": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get tenant level resource limits configuration", - "operationId": "v1TenantResourceLimitsGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Tenant resource limits", - "properties": { - "resources": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "label": { - "type": "string" - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "maxLimit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - } - } - } - } - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update tenant resource limits configuration", - "operationId": "v1TenantResourceLimitsUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", - "properties": { - "resources": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/saml/config": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified service provider metadata and Saml Spec for tenant", - "operationId": "V1TenantUidSamlConfigSpecGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Tenant", - "type": "object", - "properties": { - "acsUrl": { - "type": "string" - }, - "attributes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attributeValue": { - "type": "string" - }, - "mappedAttribute": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nameFormat": { - "type": "string" - } - } - } - }, - "audienceUrl": { - "description": "same as entity id", - "type": "string" - }, - "certificate": { - "description": "certificate for slo", - "type": "string" - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - } - }, - "entityId": { - "type": "string" - }, - "federationMetadata": { - "type": "string" - }, - "identityProvider": { - "type": "string" - }, - "isSingleLogoutEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuer": { - "description": "same as entity id", - "type": "string" - }, - "nameIdFormat": { - "type": "string" - }, - "serviceProviderMetadata": { - "type": "string" - }, - "singleLogoutUrl": { - "description": "slo url", - "type": "string", - "x-omitempty": false - }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Associates the specified federation metadata for the tenant", - "operationId": "V1TenantUidSamlConfigUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Tenant", - "type": "object", - "properties": { - "attributes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attributeValue": { - "type": "string" - }, - "mappedAttribute": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nameFormat": { - "type": "string" - } - } - } - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - } - }, - "federationMetadata": { - "type": "string" - }, - "identityProvider": { - "type": "string" - }, - "isSingleLogoutEnabled": { - "type": "boolean" - }, - "isSsoEnabled": { - "type": "boolean" - }, - "nameIdFormat": { - "type": "string" - }, - "syncSsoTeams": { - "type": "boolean" - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/tenants/{tenantUid}/sso/auth/providers": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "get sso logins for the tenants", - "operationId": "V1TenantUidSsoAuthProvidersGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "isEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "ssoLogins": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "enable sso logins for the tenants", - "operationId": "V1TenantUidSsoAuthProvidersUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "isEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "ssoLogins": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "tenantUid", - "in": "path", - "required": true - } - ] - }, - "/v1/users": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Lists users the given user context", - "tags": [ - "v1" - ], - "summary": "Lists users", - "operationId": "v1UsersList", - "parameters": [ - { - "type": "string", - "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", - "name": "fields", - "in": "query" - }, - { - "type": "string", - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "name": "filters", - "in": "query" - }, - { - "type": "string", - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "name": "orderBy", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "default": 50, - "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "format": "int64", - "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", - "name": "offset", - "in": "query" - }, - { - "type": "string", - "description": "continue token to paginate the subsequent data items", - "name": "continue", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "A user is created for the given user context", - "tags": [ - "v1" - ], - "summary": "Create User", - "operationId": "v1UsersCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User Entity input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/locations": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified users location", - "operationId": "v1UsersAssetsLocationGet", - "parameters": [ - { - "type": "string", - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "name": "filters", - "in": "query" - }, - { - "type": "string", - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "name": "orderBy", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of locations", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Location specification", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean" - }, - "storage": { - "description": "Location type", - "type": "string", - "default": "s3", - "enum": [ - "s3", - "gcp", - "minio" - ] - }, - "type": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "/v1/users/assets/locations/azure": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create a Azure location", - "operationId": "v1UsersAssetsLocationAzureCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Azure location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Azure location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "Azure storage config object", - "type": "object", - "required": [ - "resourceGroup", - "containerName", - "storageName", - "credentials" - ], - "properties": { - "containerName": { - "description": "Azure container name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "resourceGroup": { - "description": "Azure resource group name, to which the storage account is mapped", - "type": "string" - }, - "sku": { - "description": "Azure sku", - "type": "string" - }, - "storageName": { - "description": "Azure storage name", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "Azure location type [azure]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/locations/azure/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified Azure location", - "operationId": "v1UsersAssetsLocationAzureGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "Azure location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Azure location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "Azure storage config object", - "type": "object", - "required": [ - "resourceGroup", - "containerName", - "storageName", - "credentials" - ], - "properties": { - "containerName": { - "description": "Azure container name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "resourceGroup": { - "description": "Azure resource group name, to which the storage account is mapped", - "type": "string" - }, - "sku": { - "description": "Azure sku", - "type": "string" - }, - "storageName": { - "description": "Azure storage name", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "Azure location type [azure]", - "type": "string" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified Azure location", - "operationId": "v1UsersAssetsLocationAzureUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Azure location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Azure location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "Azure storage config object", - "type": "object", - "required": [ - "resourceGroup", - "containerName", - "storageName", - "credentials" - ], - "properties": { - "containerName": { - "description": "Azure container name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "resourceGroup": { - "description": "Azure resource group name, to which the storage account is mapped", - "type": "string" - }, - "sku": { - "description": "Azure sku", - "type": "string" - }, - "storageName": { - "description": "Azure storage name", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "Azure location type [azure]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the Azure location uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/locations/gcp": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create a GCP location", - "operationId": "v1UsersAssetsLocationGcpCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "GCP location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "GCP location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "GCP storage config object", - "type": "object", - "required": [ - "bucketName", - "credentials" - ], - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "projectId": { - "description": "GCP project id", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "GCP location type [gcp]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/locations/gcp/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified GCP location", - "operationId": "v1UsersAssetsLocationGcpGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "GCP location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "GCP location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "GCP storage config object", - "type": "object", - "required": [ - "bucketName", - "credentials" - ], - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "projectId": { - "description": "GCP project id", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "GCP location type [gcp]", - "type": "string" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified GCP location", - "operationId": "v1UsersAssetsLocationGcpUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "GCP location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "GCP location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "GCP storage config object", - "type": "object", - "required": [ - "bucketName", - "credentials" - ], - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "projectId": { - "description": "GCP project id", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "GCP location type [gcp]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the GCP location uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/locations/minio": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create a MinIO location", - "operationId": "v1UsersAssetsLocationMinioCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/locations/minio/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified MinIO location", - "operationId": "v1UsersAssetsLocationMinioGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified MinIO location", - "operationId": "v1UsersAssetsLocationMinioUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the MinIO location uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/locations/s3": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create a S3 location", - "operationId": "v1UsersAssetsLocationS3Create", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/locations/s3/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified S3 location", - "operationId": "v1UsersAssetsLocationS3Get", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified S3 location", - "operationId": "v1UsersAssetsLocationS3Update", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified S3 location", - "operationId": "v1UsersAssetsLocationS3Delete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the S3 location uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/locations/{type}/{uid}/default": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the default backup location", - "operationId": "v1UsersAssetsLocationDefaultUpdate", - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the location uid", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Specify the location type [aws/azure/gcp/minio/s3]", - "name": "type", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/locations/{uid}": { - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the specified location", - "operationId": "v1UsersAssetsLocationDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the location uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/sshkeys": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the SSH keys", - "operationId": "v1UsersAssetsSshGet", - "parameters": [ - { - "type": "string", - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "name": "filters", - "in": "query" - }, - { - "type": "string", - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "name": "orderBy", - "in": "query" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of SSH keys", - "type": "array", - "uniqueItems": true, - "items": { - "description": "SSH key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Creates a SSH key", - "operationId": "v1UserAssetsSshCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "SSH Key request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/sshkeys/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified user ssh key", - "operationId": "v1UsersAssetSshGetUid", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "SSH key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified user ssh key", - "operationId": "v1UsersAssetSshUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "SSH key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified user ssh key", - "operationId": "v1UsersAssetSshDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the SSH key uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/assets/vsphere/dnsMapping": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified vSphere DNS mapping", - "operationId": "v1VsphereMappingGet", - "parameters": [ - { - "type": "string", - "description": "Specify the vSphere gateway uid", - "name": "gatewayUid", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Specify the vSphere datacenter name", - "name": "datacenter", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Specify the vSphere network name", - "name": "network", - "in": "query", - "required": true - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - } - } - } - } - }, - "/v1/users/assets/vsphere/dnsMappings": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified vSphere DNS mappings", - "operationId": "v1VsphereDnsMappingsGet", - "parameters": [ - { - "type": "string", - "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", - "name": "filters", - "in": "query" - }, - { - "type": "string", - "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", - "name": "orderBy", - "in": "query" - } - ], - "responses": { - "200": { - "description": "(empty)", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of vSphere DNS mapping", - "type": "array", - "uniqueItems": true, - "items": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create a vSphere DNS mapping", - "operationId": "v1VsphereDnsMappingCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/assets/vsphere/dnsMappings/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified vSphere DNS mapping", - "operationId": "v1VsphereDnsMappingGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified vSphere DNS mapping", - "operationId": "v1VsphereDnsMappingUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the specified vSphere DNS mapping", - "operationId": "v1VsphereDnsMappingDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "description": "Specify the vSphere DNS mapping uid", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/auth/tokens/revoke": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Revoke access of specific token(s)", - "operationId": "v1UsersAuthTokensRevoke", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "tokens": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - } - }, - "/v1/users/config/scar": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Get the system Spectro repository. Restricted to edge services", - "operationId": "V1UsersConfigScarGet", - "responses": { - "200": { - "description": "(empty)", - "schema": { - "description": "system scar config spec", - "type": "object", - "properties": { - "baseContentPath": { - "type": "string" - }, - "caCert": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "insecureVerify": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } - } - } - } - } - }, - "/v1/users/kubectl/session/{sessionUid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "gets users kubectl session", - "tags": [ - "v1" - ], - "summary": "gets users kubectl session", - "operationId": "V1UsersKubectlSessionUid", - "parameters": [ - { - "type": "string", - "name": "sessionUid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "clusterUid": { - "type": "string" - }, - "creationTime": { - "type": "string" - }, - "isActive": { - "type": "boolean" - }, - "podIp": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "port": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "sessionUid": { - "type": "string" - }, - "shellyCluster": { - "type": "string" - }, - "tenantClusterEndpoint": { - "type": "string" - }, - "userName": { - "type": "string" - }, - "userUid": { - "type": "string" - } - } - } - } - } - } - }, - "/v1/users/meta": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of users metadata", - "operationId": "v1UsersMetadata", - "responses": { - "200": { - "description": "An array of users metadata items", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User meta entity", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "/v1/users/password/change": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User password change request via current password and emailId", - "tags": [ - "v1" - ], - "summary": "User password change request using the user emailId", - "operationId": "V1UsersPasswordChange", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "required": [ - "newPassword", - "emailId", - "currentPassword" - ], - "properties": { - "currentPassword": { - "type": "string" - }, - "emailId": { - "type": "string" - }, - "newPassword": { - "type": "string" - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/password/reset": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User password request will be sent to the supplied emailId", - "tags": [ - "v1" - ], - "summary": "User password reset request using the email id", - "operationId": "v1UsersEmailPasswordReset", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "required": [ - "emailId" - ], - "properties": { - "emailId": { - "type": "string" - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/users/summary": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Retrieves a list of users summary with provided filter spec", - "operationId": "v1UsersSummaryGet", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Users filter summary spec", - "properties": { - "filter": { - "description": "Users filter spec", - "properties": { - "emailId": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - } - } - ], - "responses": { - "200": { - "description": "An array of users summary items", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "projects": { - "description": "Deprecated.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectsCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - } - } - } - }, - "/v1/users/system/features": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns the users system feature", - "tags": [ - "v1" - ], - "summary": "Returns the users system feature", - "operationId": "v1UsersSystemFeature", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of system features", - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "isAllowed": { - "description": "Flag which specifies if feature is allowed or not", - "type": "boolean", - "x-omitempty": false - }, - "key": { - "description": "Unique Feature key", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "/v1/users/system/macros": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "List the macros of the system", - "operationId": "v1UsersSystemMacrosList", - "responses": { - "200": { - "description": "OK", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the macros of the system", - "operationId": "v1UsersSystemMacrosUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create or add new macros for the system user", - "operationId": "v1UsersSystemMacrosCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Delete the macros for the system user by macro name", - "operationId": "v1UsersSystemMacrosDeleteByMacroName", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update the macros for the system user by macro name", - "operationId": "v1UsersSystemMacrosUpdateByMacroName", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - } - }, - "/v1/users/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns a User for the specified uid.", - "tags": [ - "v1" - ], - "summary": "Returns the specified User", - "operationId": "v1UsersUidGet", - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "A user is created for the given user context", - "tags": [ - "v1" - ], - "summary": "Update User", - "operationId": "v1UsersUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User Entity input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Deletes the specified User for given uid", - "tags": [ - "v1" - ], - "summary": "Deletes the specified User", - "operationId": "v1UsersUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User is patched for the specified information", - "tags": [ - "v1" - ], - "summary": "Patches the specified User", - "operationId": "v1UsersUidPatch", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/password/change": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User password change request via current password", - "tags": [ - "v1" - ], - "summary": "User password change request using the user uid", - "operationId": "v1UsersUidPasswordChange", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "required": [ - "newPassword" - ], - "properties": { - "currentPassword": { - "type": "string" - }, - "newPassword": { - "type": "string" - } - } - } - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/password/reset": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User password reset request, will send the password reset option through the emailId", - "tags": [ - "v1" - ], - "summary": "User password reset request using the user uid", - "operationId": "v1UsersUidPasswordReset", - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/projects": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns a User with projects and roles", - "tags": [ - "v1" - ], - "summary": "Returns the specified User Projects and Roles information", - "operationId": "v1UsersProjectRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User is updated with projects and roles", - "tags": [ - "v1" - ], - "summary": "Updates the projects and roles for user", - "operationId": "v1UsersProjectRolesPut", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "projectUid": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/resourceRoles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns resource roles for user", - "tags": [ - "v1" - ], - "summary": "Returns the specified individual and resource roles for a user", - "operationId": "v1UsersUidResourceRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "resourceRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Resource roles added to specific user", - "tags": [ - "v1" - ], - "summary": "Add resource roles for user", - "operationId": "v1UsersUidResourceRolesCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/resourceRoles/{resourceRoleUid}": { - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deleted the resource roles from user", - "operationId": "v1UsersUidResourceRolesUidDelete", - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Specific resource roles fo user is updated", - "tags": [ - "v1" - ], - "summary": "Updates the resource roles for user", - "operationId": "v1UsersResourceRolesUidUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "resourceRoleUid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/roles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns roles clubbed from team", - "tags": [ - "v1" - ], - "summary": "Returns the specified individual and team roles for a user", - "operationId": "v1UsersUidRoles", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "object", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User is updated with roles", - "tags": [ - "v1" - ], - "summary": "Updates the roles for user", - "operationId": "v1UsersUidRolesUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/users/{uid}/status/loginMode": { - "patch": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Users status login mode", - "operationId": "v1UsersStatusLoginMode", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "type": "object", - "properties": { - "loginMode": { - "type": "string", - "enum": [ - "dev", - "devops" - ] - } - } - } - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create workspace", - "operationId": "v1WorkspacesCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Workspace information", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace specifications", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "policies": { - "description": "Workspace policies", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/workspaces/teams/{teamUid}/roles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified team's workspaces and roles data", - "operationId": "v1TeamsWorkspaceGetRoles", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "List all workspaces with the roles assigned to the users", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "List projects and its workspaces", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace users and their roles", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the workspace roles for the specified team", - "operationId": "v1TeamsWorkspaceRolesPut", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "workspaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "teamUid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/users/{userUid}/roles": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "Returns a User with workspaces and roles", - "tags": [ - "v1" - ], - "summary": "Returns the specified User workspaces and Roles information", - "operationId": "v1UsersWorkspaceGetRoles", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "List all workspaces with the roles assigned to the users", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "List projects and its workspaces", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace users and their roles", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "description": "User is updated with workspace roles", - "tags": [ - "v1" - ], - "summary": "Updates the workspace roles for user", - "operationId": "v1UsersWorkspaceRolesPut", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "workspaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "userUid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/validate/name": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Validates the workspace name", - "operationId": "v1WorkspacesValidateName", - "parameters": [ - { - "type": "string", - "name": "name", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "Ok response without content", - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - } - }, - "/v1/workspaces/{uid}": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the specified workspace", - "operationId": "v1WorkspacesUidGet", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Workspace information", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace specifications", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "policies": { - "description": "Workspace policies", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - }, - "status": { - "description": "Workspace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace error", - "properties": { - "clusterUid": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the specified workspace", - "operationId": "v1WorkspacesUidDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/backup": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the workspace backup result", - "operationId": "v1WorkspaceOpsBackupGet", - "parameters": [ - { - "type": "string", - "name": "backupRequestUid", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Workspace backup", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace backup spec", - "properties": { - "config": { - "description": "Workspace backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - }, - "workspaceUid": { - "type": "string" - } - } - }, - "status": { - "description": "Workspace backup status", - "properties": { - "workspaceBackupStatuses": { - "type": "array", - "items": { - "description": "Workspace backup status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceBackupConfig": { - "description": "Workspace cluster backup config", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Workspace backup state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "clusterBackupRefs": { - "type": "array", - "items": { - "description": "Workspace cluster backup response", - "properties": { - "backupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "config": { - "description": "Workspace backup status config", - "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "requestTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - } - } - } - } - }, - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Update workspace backup settings", - "operationId": "v1WorkspaceOpsBackupUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create workspace backup settings", - "operationId": "v1WorkspaceOpsBackupCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Delete workspace backup", - "operationId": "v1WorkspaceOpsBackupDelete", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup delete config", - "properties": { - "clusterConfigs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace backup cluster ref", - "properties": { - "backupName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "requestUid": { - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/backup/onDemand": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create On demand Workspace Backup", - "operationId": "v1WorkspaceOpsBackupOnDemandCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/clusterNamespaces": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified workspace namespaces", - "operationId": "v1WorkspacesUidClusterNamespacesUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Workspace cluster namespaces update entity", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/clusterRbacs": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create cluster rbac in workspace", - "operationId": "v1WorkspacesClusterRbacCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/clusterRbacs/{clusterRbacUid}": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified workspace cluster rbac", - "operationId": "v1WorkspacesUidClusterRbacUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "delete": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Deletes the specified workspace cluster rbac", - "operationId": "v1WorkspacesUidClusterRbacDelete", - "parameters": [ - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - }, - { - "type": "string", - "name": "clusterRbacUid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/meta": { - "put": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Updates the specified workspace meta", - "operationId": "v1WorkspacesUidMetaUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "204": { - "description": "The resource was updated successfully" - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/restore": { - "get": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Returns the workspace restore result", - "operationId": "v1WorkspaceOpsRestoreGet", - "parameters": [ - { - "type": "string", - "name": "restoreRequestUid", - "in": "query" - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "description": "Workspace restore", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace restore spec", - "properties": { - "workspaceUid": { - "type": "string" - } - } - }, - "status": { - "description": "Workspace restore status", - "properties": { - "workspaceRestoreStatuses": { - "type": "array", - "items": { - "description": "Workspace restore status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceRestoreConfig": { - "description": "Workspace cluster restore config", - "properties": { - "backupName": { - "type": "string" - }, - "clusterRestoreRefs": { - "type": "array", - "items": { - "description": "Workspace cluster restore response", - "properties": { - "backupName": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "restoreUid": { - "type": "string" - } - } - } - }, - "restoreState": { - "description": "Workspace restore state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - }, - "/v1/workspaces/{uid}/restore/onDemand": { - "post": { - "security": [ - { - "ApiKey": [] - }, - { - "Authorization": [] - } - ], - "tags": [ - "v1" - ], - "summary": "Create On demand Workspace Restore", - "operationId": "v1WorkspaceOpsRestoreOnDemandCreate", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "description": "Cluster restore config", - "required": [ - "backupRequestUid" - ], - "properties": { - "backupRequestUid": { - "type": "string" - }, - "restoreConfigs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster restore config", - "required": [ - "backupName", - "sourceClusterUid" - ], - "properties": { - "backupName": { - "type": "string" - }, - "includeClusterResources": { - "type": "boolean" - }, - "includeNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "preserveNodePorts": { - "type": "boolean" - }, - "restorePVs": { - "type": "boolean" - }, - "sourceClusterUid": { - "type": "string" - } - } - } - } - } - } - }, - { - "type": "string", - "description": "Scope the request to the specified project uid", - "name": "ProjectUid", - "in": "header" - } - ], - "responses": { - "201": { - "description": "Created successfully", - "schema": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "headers": { - "AuditUid": { - "type": "string", - "description": "Audit uid for the request" - } - } - } - } - }, - "parameters": [ - { - "type": "string", - "name": "uid", - "in": "path", - "required": true - } - ] - } - }, - "definitions": { - "URLEncodedBase64": { - "type": "string", - "format": "url-encoded-base64" - }, - "V1AwsAccountSts": { - "description": "AWS cloud account sts", - "type": "object", - "properties": { - "accountId": { - "description": "A 12-digit number, such as 123456789012, that uniquely identifies an AWS account", - "type": "string" - }, - "externalId": { - "description": "It can be passed to the AssumeRole API of the STS. It can be used in the condition element in a role's trust policy, allowing the role to be assumed only when a certain value is present in the external ID", - "type": "string" - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - } - } - }, - "V1AwsPropertiesValidateSpec": { - "description": "AWS properties validate spec", - "type": "object", - "properties": { - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - } - } - }, - "V1EksPropertiesValidateSpec": { - "description": "Eks properties validate spec", - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcId": { - "type": "string" - } - } - }, - "V1GcpPropertiesValidateSpec": { - "description": "Gcp properties validate spec", - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "cloudAccountUid": { - "type": "string" - }, - "projectId": { - "type": "string" - }, - "region": { - "type": "string" - } - } - }, - "V1PasswordsBlockList": { - "description": "List of blocklisted passwords", - "type": "object", - "properties": { - "spec": { - "description": "List of block listed passwords", - "type": "object", - "properties": { - "passwords": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "urlEncodedBase64": { - "type": "string", - "format": "url-encoded-base64" - }, - "v1.AzureAccountEntitySpec": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "v1.CloudWatchConfig": { - "description": "Cloud watch config entity", - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "description": "Name of the group", - "type": "string" - }, - "region": { - "description": "Name of the region", - "type": "string" - }, - "stream": { - "description": "Name of the stream", - "type": "string" - } - } - }, - "v1.DataSinkCloudWatchConfig": { - "description": "Data sink cloud watch config", - "type": "object", - "properties": { - "payload": { - "description": "List of data sink payload entities", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Data sink payload entity", - "type": "object", - "properties": { - "refUid": { - "description": "RefUid of the data sink payload", - "type": "string" - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - }, - "additionalProperties": { - "type": "object" - } - } - }, - "spec": { - "description": "Cloud watch config entity", - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "description": "Name of the group", - "type": "string" - }, - "region": { - "description": "Name of the region", - "type": "string" - }, - "stream": { - "description": "Name of the stream", - "type": "string" - } - } - } - } - }, - "v1.DataSinkPayload": { - "description": "Data sink payload entity", - "type": "object", - "properties": { - "refUid": { - "description": "RefUid of the data sink payload", - "type": "string" - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - }, - "additionalProperties": { - "type": "object" - } - }, - "v1.DataSinkPayloads": { - "description": "List of data sink payload entities", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Data sink payload entity", - "type": "object", - "properties": { - "refUid": { - "description": "RefUid of the data sink payload", - "type": "string" - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - }, - "additionalProperties": { - "type": "object" - } - } - }, - "v1.GcpAccountEntitySpec": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "v1AADProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1APIEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "v1APIServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "v1AWSVolumeTypes": { - "description": "AWS Volume Types", - "type": "object", - "properties": { - "volumeTypes": { - "type": "array", - "items": { - "description": "AWS Volume Type entity", - "type": "object", - "properties": { - "id": { - "description": "AWS volume type id", - "type": "string" - }, - "maxIops": { - "description": "Iops through put of volume type", - "type": "string" - }, - "maxThroughPut": { - "description": "Max through put of volume type", - "type": "string" - }, - "name": { - "description": "AWS Volume Type Name", - "type": "string" - } - } - } - } - } - }, - "v1AclMeta": { - "description": "Resource access control information (Read-only response data)", - "type": "object", - "properties": { - "ownerUid": { - "description": "User or service uid which created the resource", - "type": "string" - }, - "projectUid": { - "description": "Project's uid if the resource is under a project", - "type": "string" - }, - "tenantUid": { - "description": "Tenant's uid", - "type": "string" - } - } - }, - "v1ActiveTenantResources": { - "description": "Active resources of tenant", - "type": "object", - "properties": { - "activeResources": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "v1Address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1Alert": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "component": { - "type": "string" - } - } - }, - "v1AlertEntity": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1AlertNotificationStatus": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1Alerts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "component": { - "type": "string" - } - } - } - }, - "v1ApiEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "v1ApiKey": { - "description": "API key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "API key specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "key": { - "description": "Deprecated: API key field will be no longer available", - "type": "string" - }, - "user": { - "description": "API key user information", - "type": "object", - "properties": { - "firstName": { - "description": "First name of user", - "type": "string" - }, - "lastName": { - "description": "Last name of user", - "type": "string" - }, - "uid": { - "description": "User uid", - "type": "string" - } - } - } - } - }, - "status": { - "description": "API key status", - "type": "object", - "properties": { - "isActive": { - "description": "API key active state", - "type": "boolean" - } - } - } - } - }, - "v1ApiKeyActiveState": { - "properties": { - "isActive": { - "description": "API key active state", - "type": "boolean" - } - } - }, - "v1ApiKeyCreateResponse": { - "description": "Response of create API key", - "type": "object", - "properties": { - "apiKey": { - "description": "Api key is used for authentication", - "type": "string" - }, - "uid": { - "description": "User uid", - "type": "string" - } - } - }, - "v1ApiKeyEntity": { - "description": "API key request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "API key specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "userUid": { - "description": "User to whom the API key has to be created", - "type": "string" - } - } - } - } - }, - "v1ApiKeySpec": { - "description": "API key specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "key": { - "description": "Deprecated: API key field will be no longer available", - "type": "string" - }, - "user": { - "description": "API key user information", - "type": "object", - "properties": { - "firstName": { - "description": "First name of user", - "type": "string" - }, - "lastName": { - "description": "Last name of user", - "type": "string" - }, - "uid": { - "description": "User uid", - "type": "string" - } - } - } - } - }, - "v1ApiKeySpecEntity": { - "description": "API key specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "userUid": { - "description": "User to whom the API key has to be created", - "type": "string" - } - } - }, - "v1ApiKeySpecUpdate": { - "description": "API key update request specification", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1ApiKeyStatus": { - "description": "API key status", - "type": "object", - "properties": { - "isActive": { - "description": "API key active state", - "type": "boolean" - } - } - }, - "v1ApiKeyUpdate": { - "description": "API key update request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "API key update request specification", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1ApiKeyUser": { - "description": "API key user information", - "type": "object", - "properties": { - "firstName": { - "description": "First name of user", - "type": "string" - }, - "lastName": { - "description": "Last name of user", - "type": "string" - }, - "uid": { - "description": "User uid", - "type": "string" - } - } - }, - "v1ApiKeys": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of API keys", - "type": "array", - "uniqueItems": true, - "items": { - "description": "API key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "API key specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "key": { - "description": "Deprecated: API key field will be no longer available", - "type": "string" - }, - "user": { - "description": "API key user information", - "type": "object", - "properties": { - "firstName": { - "description": "First name of user", - "type": "string" - }, - "lastName": { - "description": "Last name of user", - "type": "string" - }, - "uid": { - "description": "User uid", - "type": "string" - } - } - } - } - }, - "status": { - "description": "API key status", - "type": "object", - "properties": { - "isActive": { - "description": "API key active state", - "type": "boolean" - } - } - } - } - } - } - } - }, - "v1ApiProfiler": { - "type": "object", - "properties": { - "api": { - "type": "string" - }, - "endTime": { - "type": "string", - "format": "date-time" - }, - "ops": { - "type": "array", - "items": { - "type": "string" - } - }, - "requestUid": { - "type": "string" - }, - "startTime": { - "type": "string", - "format": "date-time" - }, - "timeTaken": { - "type": "integer", - "format": "int64" - } - } - }, - "v1AppDeployment": { - "description": "Application deployment response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application deployment spec", - "type": "object", - "properties": { - "config": { - "description": "Application deployment config response", - "type": "object", - "properties": { - "target": { - "description": "Application deployment target config response", - "type": "object", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "type": "object", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment cluster uid", - "type": "string" - } - } - }, - "envRef": { - "description": "Application deployment target environment reference", - "type": "object", - "properties": { - "name": { - "description": "Application deployment target resource name", - "type": "string" - }, - "type": { - "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", - "type": "string" - }, - "uid": { - "description": "Application deployment target resource uid", - "type": "string" - } - } - } - } - } - } - }, - "profile": { - "description": "Application deployment profile", - "type": "object", - "properties": { - "metadata": { - "description": "Application deployment profile metadata", - "type": "object", - "properties": { - "name": { - "description": "Application deployment profile name", - "type": "string" - }, - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - }, - "template": { - "description": "Application profile template information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier reference", - "type": "object", - "properties": { - "name": { - "description": "Application tier name", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "uid": { - "description": "Application tier uid to uniquely identify the tier", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "Application deployment status", - "type": "object", - "properties": { - "appTiers": { - "description": "Application deployment tiers", - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "Application deployment state [ \"Pending\", \"Deploying\", \"Deployed\", \"Updating\" ]", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentClusterGroupConfigEntity": { - "description": "Application deployment cluster group config", - "type": "object", - "properties": { - "targetSpec": { - "description": "Application deployment cluster group target spec", - "type": "object", - "required": [ - "clusterName", - "clusterGroupUid" - ], - "properties": { - "clusterGroupUid": { - "description": "Application deployment cluster group uid", - "type": "string" - }, - "clusterLimits": { - "description": "Application deployment target cluster limits", - "properties": { - "cpu": { - "description": "CPU cores", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "clusterName": { - "description": "Application deployment virtual cluster name", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentClusterGroupEntity": { - "description": "Application deployment cluster group request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Application deployment cluster group spec", - "type": "object", - "properties": { - "config": { - "description": "Application deployment cluster group config", - "type": "object", - "properties": { - "targetSpec": { - "description": "Application deployment cluster group target spec", - "type": "object", - "required": [ - "clusterName", - "clusterGroupUid" - ], - "properties": { - "clusterGroupUid": { - "description": "Application deployment cluster group uid", - "type": "string" - }, - "clusterLimits": { - "description": "Application deployment target cluster limits", - "properties": { - "cpu": { - "description": "CPU cores", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "clusterName": { - "description": "Application deployment virtual cluster name", - "type": "string" - } - } - } - } - }, - "profile": { - "description": "Application deployment profile request payload", - "type": "object", - "required": [ - "appProfileUid" - ], - "properties": { - "appProfileUid": { - "description": "Application deployment profile uid", - "type": "string" - } - } - } - } - } - } - }, - "v1AppDeploymentClusterGroupSpec": { - "description": "Application deployment cluster group spec", - "type": "object", - "properties": { - "config": { - "description": "Application deployment cluster group config", - "type": "object", - "properties": { - "targetSpec": { - "description": "Application deployment cluster group target spec", - "type": "object", - "required": [ - "clusterName", - "clusterGroupUid" - ], - "properties": { - "clusterGroupUid": { - "description": "Application deployment cluster group uid", - "type": "string" - }, - "clusterLimits": { - "description": "Application deployment target cluster limits", - "properties": { - "cpu": { - "description": "CPU cores", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "clusterName": { - "description": "Application deployment virtual cluster name", - "type": "string" - } - } - } - } - }, - "profile": { - "description": "Application deployment profile request payload", - "type": "object", - "required": [ - "appProfileUid" - ], - "properties": { - "appProfileUid": { - "description": "Application deployment profile uid", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentClusterGroupTargetSpec": { - "description": "Application deployment cluster group target spec", - "type": "object", - "required": [ - "clusterName", - "clusterGroupUid" - ], - "properties": { - "clusterGroupUid": { - "description": "Application deployment cluster group uid", - "type": "string" - }, - "clusterLimits": { - "description": "Application deployment target cluster limits", - "properties": { - "cpu": { - "description": "CPU cores", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "clusterName": { - "description": "Application deployment virtual cluster name", - "type": "string" - } - } - }, - "v1AppDeploymentClusterHealth": { - "description": "Application deployment cluster health status", - "properties": { - "state": { - "type": "string" - } - } - }, - "v1AppDeploymentClusterRef": { - "description": "Application deployment cluster reference", - "type": "object", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment cluster uid", - "type": "string" - } - } - }, - "v1AppDeploymentClusterRefSummary": { - "description": "Application deployment cluster reference", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment source cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment source cluster uid", - "type": "string" - } - } - }, - "v1AppDeploymentClusterStatus": { - "description": "Application deployment cluster status", - "properties": { - "health": { - "description": "Application deployment cluster health status", - "properties": { - "state": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1AppDeploymentConfig": { - "description": "Application deployment config response", - "type": "object", - "properties": { - "target": { - "description": "Application deployment target config response", - "type": "object", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "type": "object", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment cluster uid", - "type": "string" - } - } - }, - "envRef": { - "description": "Application deployment target environment reference", - "type": "object", - "properties": { - "name": { - "description": "Application deployment target resource name", - "type": "string" - }, - "type": { - "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", - "type": "string" - }, - "uid": { - "description": "Application deployment target resource uid", - "type": "string" - } - } - } - } - } - } - }, - "v1AppDeploymentConfigSummary": { - "description": "Application deployment config summary", - "properties": { - "target": { - "description": "Application deployment target config summary", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment source cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment source cluster uid", - "type": "string" - } - } - } - } - } - } - }, - "v1AppDeploymentFilterSpec": { - "description": "Application deployment filter spec", - "properties": { - "appDeploymentName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "clusterUids": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - } - } - }, - "v1AppDeploymentNotifications": { - "description": "Application deployment notifications", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1AppDeploymentProfile": { - "description": "Application deployment profile", - "type": "object", - "properties": { - "metadata": { - "description": "Application deployment profile metadata", - "type": "object", - "properties": { - "name": { - "description": "Application deployment profile name", - "type": "string" - }, - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - }, - "template": { - "description": "Application profile template information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier reference", - "type": "object", - "properties": { - "name": { - "description": "Application tier name", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "uid": { - "description": "Application tier uid to uniquely identify the tier", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppDeploymentProfileEntity": { - "description": "Application deployment profile request payload", - "type": "object", - "required": [ - "appProfileUid" - ], - "properties": { - "appProfileUid": { - "description": "Application deployment profile uid", - "type": "string" - } - } - }, - "v1AppDeploymentProfileMeta": { - "description": "Application deployment profile metadata", - "type": "object", - "properties": { - "name": { - "description": "Application deployment profile name", - "type": "string" - }, - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - }, - "v1AppDeploymentProfileMetadataSummary": { - "description": "Application deployment profile metadata summary", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1AppDeploymentProfileSpec": { - "description": "Application deployment profile spec", - "type": "object", - "properties": { - "metadata": { - "description": "Application deployment profile metadata", - "type": "object", - "properties": { - "name": { - "description": "Application deployment profile name", - "type": "string" - }, - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - }, - "template": { - "description": "Application profile template specs", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application tier specs", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier attached manifest content in yaml format", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppDeploymentProfileSummary": { - "description": "Application deployment profile summary", - "properties": { - "metadata": { - "description": "Application deployment profile metadata summary", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "template": { - "description": "Application profile template summary", - "type": "object", - "properties": { - "appTiers": { - "type": "array", - "items": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppDeploymentProfileVersion": { - "description": "Application deployment profile version", - "type": "object", - "properties": { - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - }, - "v1AppDeploymentProfileVersions": { - "description": "Application deployment profile versions", - "type": "object", - "properties": { - "availableVersions": { - "description": "Application deployment profile available versions", - "type": "array", - "items": { - "description": "Application deployment profile version", - "type": "object", - "properties": { - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - } - }, - "latestVersions": { - "description": "Application deployment profile latest versions", - "type": "array", - "items": { - "description": "Application deployment profile version", - "type": "object", - "properties": { - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - } - }, - "metadata": { - "description": "Application deployment profile metadata", - "type": "object", - "properties": { - "name": { - "description": "Application deployment profile name", - "type": "string" - }, - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentSortFields": { - "type": "string", - "enum": [ - "appDeploymentName", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1AppDeploymentSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "appDeploymentName", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1AppDeploymentSpec": { - "description": "Application deployment spec", - "type": "object", - "properties": { - "config": { - "description": "Application deployment config response", - "type": "object", - "properties": { - "target": { - "description": "Application deployment target config response", - "type": "object", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "type": "object", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment cluster uid", - "type": "string" - } - } - }, - "envRef": { - "description": "Application deployment target environment reference", - "type": "object", - "properties": { - "name": { - "description": "Application deployment target resource name", - "type": "string" - }, - "type": { - "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", - "type": "string" - }, - "uid": { - "description": "Application deployment target resource uid", - "type": "string" - } - } - } - } - } - } - }, - "profile": { - "description": "Application deployment profile", - "type": "object", - "properties": { - "metadata": { - "description": "Application deployment profile metadata", - "type": "object", - "properties": { - "name": { - "description": "Application deployment profile name", - "type": "string" - }, - "uid": { - "description": "Application deployment profile uid", - "type": "string" - }, - "version": { - "description": "Application deployment profile version", - "type": "string" - } - } - }, - "template": { - "description": "Application profile template information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier reference", - "type": "object", - "properties": { - "name": { - "description": "Application tier name", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "uid": { - "description": "Application tier uid to uniquely identify the tier", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1AppDeploymentStatus": { - "description": "Application deployment status", - "type": "object", - "properties": { - "appTiers": { - "description": "Application deployment tiers", - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "Application deployment state [ \"Pending\", \"Deploying\", \"Deployed\", \"Updating\" ]", - "type": "string" - } - } - }, - "v1AppDeploymentStatusSummary": { - "description": "Application deployment status summary", - "type": "object", - "properties": { - "cluster": { - "description": "Application deployment cluster status", - "properties": { - "health": { - "description": "Application deployment cluster health status", - "properties": { - "state": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "notifications": { - "description": "Application deployment notifications", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1AppDeploymentSummary": { - "description": "Application deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application deployment spec summary", - "type": "object", - "properties": { - "config": { - "description": "Application deployment config summary", - "properties": { - "target": { - "description": "Application deployment target config summary", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment source cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment source cluster uid", - "type": "string" - } - } - } - } - } - } - }, - "profile": { - "description": "Application deployment profile summary", - "properties": { - "metadata": { - "description": "Application deployment profile metadata summary", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "template": { - "description": "Application profile template summary", - "type": "object", - "properties": { - "appTiers": { - "type": "array", - "items": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "Application deployment status summary", - "type": "object", - "properties": { - "cluster": { - "description": "Application deployment cluster status", - "properties": { - "health": { - "description": "Application deployment cluster health status", - "properties": { - "state": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "notifications": { - "description": "Application deployment notifications", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1AppDeploymentTargetClusterLimits": { - "description": "Application deployment target cluster limits", - "properties": { - "cpu": { - "description": "CPU cores", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "v1AppDeploymentTargetConfig": { - "description": "Application deployment target config response", - "type": "object", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "type": "object", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment cluster uid", - "type": "string" - } - } - }, - "envRef": { - "description": "Application deployment target environment reference", - "type": "object", - "properties": { - "name": { - "description": "Application deployment target resource name", - "type": "string" - }, - "type": { - "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", - "type": "string" - }, - "uid": { - "description": "Application deployment target resource uid", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentTargetConfigSummary": { - "description": "Application deployment target config summary", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment source cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment source cluster uid", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentTargetEnvironmentRef": { - "description": "Application deployment target environment reference", - "type": "object", - "properties": { - "name": { - "description": "Application deployment target resource name", - "type": "string" - }, - "type": { - "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", - "type": "string" - }, - "uid": { - "description": "Application deployment target resource uid", - "type": "string" - } - } - }, - "v1AppDeploymentVirtualClusterConfigEntity": { - "description": "Application deployment virtual cluster config", - "type": "object", - "properties": { - "targetSpec": { - "description": "Application deployment virtual cluster target spec", - "type": "object", - "required": [ - "clusterUid" - ], - "properties": { - "clusterUid": { - "description": "Application deployment virtual cluster uid", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentVirtualClusterEntity": { - "description": "Application deployment virtual cluster request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Application deployment virtual cluster spec", - "type": "object", - "properties": { - "config": { - "description": "Application deployment virtual cluster config", - "type": "object", - "properties": { - "targetSpec": { - "description": "Application deployment virtual cluster target spec", - "type": "object", - "required": [ - "clusterUid" - ], - "properties": { - "clusterUid": { - "description": "Application deployment virtual cluster uid", - "type": "string" - } - } - } - } - }, - "profile": { - "description": "Application deployment profile request payload", - "type": "object", - "required": [ - "appProfileUid" - ], - "properties": { - "appProfileUid": { - "description": "Application deployment profile uid", - "type": "string" - } - } - } - } - } - } - }, - "v1AppDeploymentVirtualClusterSpec": { - "description": "Application deployment virtual cluster spec", - "type": "object", - "properties": { - "config": { - "description": "Application deployment virtual cluster config", - "type": "object", - "properties": { - "targetSpec": { - "description": "Application deployment virtual cluster target spec", - "type": "object", - "required": [ - "clusterUid" - ], - "properties": { - "clusterUid": { - "description": "Application deployment virtual cluster uid", - "type": "string" - } - } - } - } - }, - "profile": { - "description": "Application deployment profile request payload", - "type": "object", - "required": [ - "appProfileUid" - ], - "properties": { - "appProfileUid": { - "description": "Application deployment profile uid", - "type": "string" - } - } - } - } - }, - "v1AppDeploymentVirtualClusterTargetSpec": { - "description": "Application deployment virtual cluster target spec", - "type": "object", - "required": [ - "clusterUid" - ], - "properties": { - "clusterUid": { - "description": "Application deployment virtual cluster uid", - "type": "string" - } - } - }, - "v1AppDeploymentsFilterSpec": { - "description": "Application deployment filter summary spec", - "properties": { - "filter": { - "description": "Application deployment filter spec", - "properties": { - "appDeploymentName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "clusterUids": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "appDeploymentName", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1AppDeploymentsSummary": { - "type": "object", - "properties": { - "appDeployments": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application deployment spec summary", - "type": "object", - "properties": { - "config": { - "description": "Application deployment config summary", - "properties": { - "target": { - "description": "Application deployment target config summary", - "properties": { - "clusterRef": { - "description": "Application deployment cluster reference", - "properties": { - "deploymentClusterType": { - "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", - "type": "string", - "enum": [ - "virtual", - "host" - ] - }, - "name": { - "description": "Application deployment source cluster name", - "type": "string" - }, - "uid": { - "description": "Application deployment source cluster uid", - "type": "string" - } - } - } - } - } - } - }, - "profile": { - "description": "Application deployment profile summary", - "properties": { - "metadata": { - "description": "Application deployment profile metadata summary", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "template": { - "description": "Application profile template summary", - "type": "object", - "properties": { - "appTiers": { - "type": "array", - "items": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "Application deployment status summary", - "type": "object", - "properties": { - "cluster": { - "description": "Application deployment cluster status", - "properties": { - "health": { - "description": "Application deployment cluster health status", - "properties": { - "state": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "notifications": { - "description": "Application deployment notifications", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AppFeatureFreemium": { - "description": "Freemium information", - "properties": { - "activeClustersLimit": { - "type": "integer", - "x-omitempty": false - }, - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "overageUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "totalUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1AppFeatures": { - "description": "System app features", - "properties": { - "developerCredit": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - }, - "freeCloudCredit": { - "type": "boolean", - "x-omitempty": false - }, - "freemium": { - "description": "Freemium information", - "properties": { - "activeClustersLimit": { - "type": "integer", - "x-omitempty": false - }, - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "overageUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "totalUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1AppProfile": { - "description": "Application profile response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "parentUid": { - "description": "Application profile parent profile uid", - "type": "string" - }, - "template": { - "description": "Application profile template information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier reference", - "type": "object", - "properties": { - "name": { - "description": "Application tier name", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "uid": { - "description": "Application tier uid to uniquely identify the tier", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - }, - "version": { - "description": "Application profile version", - "type": "string" - }, - "versions": { - "description": "Application profile versions list", - "type": "array", - "items": { - "description": "Application profile version", - "type": "object", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Application profile status", - "type": "object", - "properties": { - "inUseApps": { - "description": "Application profile apps array", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppProfileCloneEntity": { - "description": "Application profile clone request payload", - "type": "object", - "properties": { - "metadata": { - "description": "Application profile clone metadata", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Application profile name", - "type": "string" - }, - "target": { - "description": "Application profile clone target", - "type": "object", - "properties": { - "projectUid": { - "description": "Application profile clone target project uid", - "type": "string" - } - } - }, - "version": { - "description": "Application profile version", - "type": "string" - } - } - } - } - }, - "v1AppProfileCloneMetaInputEntity": { - "description": "Application profile clone metadata", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Application profile name", - "type": "string" - }, - "target": { - "description": "Application profile clone target", - "type": "object", - "properties": { - "projectUid": { - "description": "Application profile clone target project uid", - "type": "string" - } - } - }, - "version": { - "description": "Application profile version", - "type": "string" - } - } - }, - "v1AppProfileCloneTarget": { - "description": "Application profile clone target", - "type": "object", - "properties": { - "projectUid": { - "description": "Application profile clone target project uid", - "type": "string" - } - } - }, - "v1AppProfileEntity": { - "description": "Application profile request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Application profile spec", - "type": "object", - "properties": { - "template": { - "description": "Application profile template spec", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier manifests", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Application tier name", - "type": "string" - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "name": { - "description": "Application tier property name", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Application tier registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - } - }, - "version": { - "description": "Application profile version", - "type": "string" - } - } - } - } - }, - "v1AppProfileFilterSpec": { - "description": "Application profile filter spec", - "properties": { - "profileName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "version": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "gt": { - "type": "string", - "x-nullable": true - }, - "lt": { - "type": "string", - "x-nullable": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "v1AppProfileMetaEntity": { - "description": "Application profile metadata request payload", - "type": "object", - "required": [ - "metadata" - ], - "properties": { - "metadata": { - "description": "Application profile metadata update request payload", - "type": "object", - "properties": { - "annotations": { - "description": "Application profile annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Application profile labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "version": { - "description": "Application profile version", - "type": "string" - } - } - }, - "v1AppProfileMetaUpdateEntity": { - "description": "Application profile metadata update request payload", - "type": "object", - "properties": { - "annotations": { - "description": "Application profile annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Application profile labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1AppProfileMetadata": { - "description": "Application profile metadata summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "properties": { - "version": { - "type": "string" - } - } - } - } - }, - "v1AppProfileSortFields": { - "type": "string", - "enum": [ - "profileName", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1AppProfileSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "profileName", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1AppProfileSummary": { - "description": "Application profile summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application profile spec summary", - "type": "object", - "properties": { - "parentUid": { - "type": "string" - }, - "template": { - "description": "Application profile template summary", - "type": "object", - "properties": { - "appTiers": { - "type": "array", - "items": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "version": { - "type": "string" - }, - "versions": { - "description": "Application profile's list of all the versions", - "type": "array", - "items": { - "description": "Application profile version", - "type": "object", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppProfileTemplate": { - "description": "Application profile template information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier reference", - "type": "object", - "properties": { - "name": { - "description": "Application tier name", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "uid": { - "description": "Application tier uid to uniquely identify the tier", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - }, - "v1AppProfileTemplateEntity": { - "description": "Application profile template spec", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application tier request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier manifests", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Application tier name", - "type": "string" - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "name": { - "description": "Application tier property name", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Application tier registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - } - }, - "v1AppProfileTemplateSpec": { - "description": "Application profile template specs", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application tier specs", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier attached manifest content in yaml format", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - } - }, - "registryRefs": { - "description": "Application profile registries reference", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - }, - "v1AppProfileTemplateSummary": { - "description": "Application profile template summary", - "type": "object", - "properties": { - "appTiers": { - "type": "array", - "items": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1AppProfileTiers": { - "description": "Application profile tiers information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application profile tiers information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application tier specs", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier attached manifest content in yaml format", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1AppProfileTiersSpec": { - "description": "Application profile tiers information", - "type": "object", - "properties": { - "appTiers": { - "description": "Application profile tiers", - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application tier specs", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier attached manifest content in yaml format", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppProfileVersion": { - "description": "Application profile version", - "type": "object", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1AppProfilesFilterSpec": { - "description": "Application profile filter summary spec", - "properties": { - "filter": { - "description": "Application profile filter spec", - "properties": { - "profileName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "version": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "gt": { - "type": "string", - "x-nullable": true - }, - "lt": { - "type": "string", - "x-nullable": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "profileName", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1AppProfilesMetadata": { - "type": "object", - "properties": { - "appProfiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application profile metadata summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "properties": { - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1AppProfilesSummary": { - "type": "object", - "properties": { - "appProfiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Application profile summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application profile spec summary", - "type": "object", - "properties": { - "parentUid": { - "type": "string" - }, - "template": { - "description": "Application profile template summary", - "type": "object", - "properties": { - "appTiers": { - "type": "array", - "items": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "version": { - "type": "string" - }, - "versions": { - "description": "Application profile's list of all the versions", - "type": "array", - "items": { - "description": "Application profile version", - "type": "object", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AppTier": { - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Application tier specs", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier attached manifest content in yaml format", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - } - } - }, - "v1AppTierEntity": { - "description": "Application tier request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier manifests", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Application tier name", - "type": "string" - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "name": { - "description": "Application tier property name", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Application tier registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - }, - "v1AppTierManifests": { - "description": "Application tier manifests data", - "properties": { - "manifests": { - "description": "Application tier manifests array", - "type": "array", - "items": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "properties": { - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1AppTierPatchEntity": { - "description": "Application tier patch request payload", - "properties": { - "appTier": { - "description": "Application tier request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier manifests", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Application tier name", - "type": "string" - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "name": { - "description": "Application tier property name", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Application tier registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - }, - "replaceWithAppTier": { - "description": "Application tier UID to be replaced with new tier", - "type": "string" - } - } - }, - "v1AppTierProperty": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - }, - "v1AppTierPropertyEntity": { - "description": "Application tier property object", - "properties": { - "name": { - "description": "Application tier property name", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - }, - "v1AppTierRef": { - "description": "Application tier reference", - "type": "object", - "properties": { - "name": { - "description": "Application tier name", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "uid": { - "description": "Application tier uid to uniquely identify the tier", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - }, - "v1AppTierResolvedValues": { - "description": "Application tier resolved macro values", - "properties": { - "resolved": { - "description": "Application tier resolved macro values map", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1AppTierSourceSummary": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1AppTierSpec": { - "description": "Application tier specs", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier attached manifest content in yaml format", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "format": { - "description": "Application tier property format", - "type": "string" - }, - "name": { - "description": "Application tier property name", - "type": "string" - }, - "type": { - "description": "Application tier property data type", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Registry uid", - "type": "string" - }, - "sourceAppTierUid": { - "description": "Application tier source pack uid", - "type": "string" - }, - "type": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - }, - "v1AppTierSummary": { - "description": "Application profile's tier summary", - "properties": { - "name": { - "type": "string" - }, - "source": { - "description": "Application profile's tier source information", - "properties": { - "addonSubType": { - "type": "string" - }, - "addonType": { - "type": "string" - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1AppTierType": { - "type": "string", - "default": "manifest", - "enum": [ - "manifest", - "helm", - "operator-instance", - "container" - ] - }, - "v1AppTierUpdateEntity": { - "description": "Application tier update request payload", - "type": "object", - "properties": { - "containerRegistryUid": { - "description": "Application tier container registry uid", - "type": "string" - }, - "installOrder": { - "description": "Application tier installation order", - "type": "integer", - "format": "int32" - }, - "manifests": { - "description": "Application tier manifests", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Application tier name", - "type": "string" - }, - "properties": { - "description": "Application tier properties", - "type": "array", - "items": { - "description": "Application tier property object", - "properties": { - "name": { - "description": "Application tier property name", - "type": "string" - }, - "value": { - "description": "Application tier property value", - "type": "string" - } - } - } - }, - "values": { - "description": "Application tier configuration values in yaml format", - "type": "string" - }, - "version": { - "description": "Application tier version", - "type": "string" - } - } - }, - "v1AppVersion": { - "description": "spectro application management app version information", - "properties": { - "intermediateVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - }, - "latestVerson": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - } - }, - "v1ArchType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - }, - "v1AsyncOperationIdEntity": { - "description": "Async operation id", - "type": "object", - "properties": { - "operationId": { - "description": "OperationId for a particular sync operation id", - "type": "string" - } - } - }, - "v1AsyncResult": { - "type": "object", - "properties": { - "data": { - "type": "object" - }, - "error": { - "type": "string" - }, - "isSuccess": { - "type": "boolean" - } - } - }, - "v1AsyncStatus": { - "type": "object", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "result": { - "type": "object", - "properties": { - "data": { - "type": "object" - }, - "error": { - "type": "string" - }, - "isSuccess": { - "type": "boolean" - } - } - }, - "stage": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1Audit": { - "description": "Audit response payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Audit specifications", - "properties": { - "actionMsg": { - "description": "Audit action message", - "type": "string" - }, - "actionType": { - "type": "string", - "enum": [ - "create", - "update", - "delete", - "publish", - "deploy" - ] - }, - "actor": { - "description": "Audit actor object", - "properties": { - "actorType": { - "type": "string", - "enum": [ - "user", - "system", - "service" - ] - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "serviceName": { - "type": "string" - }, - "user": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "org": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "contentMsg": { - "description": "Audit content message", - "type": "string" - }, - "resource": { - "description": "Audit resource reference object", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "description": "Audit resource type", - "type": "string" - }, - "label": { - "description": "Audit resource label", - "type": "string" - }, - "name": { - "description": "Audit resource name", - "type": "string" - }, - "uid": { - "description": "Audit resource uid", - "type": "string" - } - } - }, - "userMsg": { - "description": "Audit user message", - "type": "string" - } - } - } - } - }, - "v1AuditActor": { - "description": "Audit actor object", - "properties": { - "actorType": { - "type": "string", - "enum": [ - "user", - "system", - "service" - ] - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "serviceName": { - "type": "string" - }, - "user": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "org": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1AuditMsgUpdate": { - "description": "Audit user message update request payload", - "type": "object", - "properties": { - "userMsg": { - "description": "User message", - "type": "string", - "maxLength": 255, - "minLength": 3 - } - } - }, - "v1AuditResourceReference": { - "description": "Audit resource reference object", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "description": "Audit resource type", - "type": "string" - }, - "label": { - "description": "Audit resource label", - "type": "string" - }, - "name": { - "description": "Audit resource name", - "type": "string" - }, - "uid": { - "description": "Audit resource uid", - "type": "string" - } - } - }, - "v1AuditSpec": { - "description": "Audit specifications", - "properties": { - "actionMsg": { - "description": "Audit action message", - "type": "string" - }, - "actionType": { - "type": "string", - "enum": [ - "create", - "update", - "delete", - "publish", - "deploy" - ] - }, - "actor": { - "description": "Audit actor object", - "properties": { - "actorType": { - "type": "string", - "enum": [ - "user", - "system", - "service" - ] - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "serviceName": { - "type": "string" - }, - "user": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "org": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "contentMsg": { - "description": "Audit content message", - "type": "string" - }, - "resource": { - "description": "Audit resource reference object", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "description": "Audit resource type", - "type": "string" - }, - "label": { - "description": "Audit resource label", - "type": "string" - }, - "name": { - "description": "Audit resource name", - "type": "string" - }, - "uid": { - "description": "Audit resource uid", - "type": "string" - } - } - }, - "userMsg": { - "description": "Audit user message", - "type": "string" - } - } - }, - "v1AuditSysMsg": { - "description": "Audit system message", - "type": "object", - "properties": { - "actionMsg": { - "description": "Audit resource action message", - "type": "string" - }, - "contentMsg": { - "description": "Audit resource content message", - "type": "string" - } - } - }, - "v1Audits": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of audit message", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Audit response payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Audit specifications", - "properties": { - "actionMsg": { - "description": "Audit action message", - "type": "string" - }, - "actionType": { - "type": "string", - "enum": [ - "create", - "update", - "delete", - "publish", - "deploy" - ] - }, - "actor": { - "description": "Audit actor object", - "properties": { - "actorType": { - "type": "string", - "enum": [ - "user", - "system", - "service" - ] - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "serviceName": { - "type": "string" - }, - "user": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "org": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "contentMsg": { - "description": "Audit content message", - "type": "string" - }, - "resource": { - "description": "Audit resource reference object", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "description": "Audit resource type", - "type": "string" - }, - "label": { - "description": "Audit resource label", - "type": "string" - }, - "name": { - "description": "Audit resource name", - "type": "string" - }, - "uid": { - "description": "Audit resource uid", - "type": "string" - } - } - }, - "userMsg": { - "description": "Audit user message", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AuthAllyTokenRequest": { - "type": "object", - "properties": { - "edgeAuthToken": { - "type": "string" - }, - "edgeHostUid": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "v1AuthCertsGet": { - "description": "Auth certs get", - "properties": { - "apiDomain": { - "type": "string", - "x-omitempty": false - }, - "caCert": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "rootDomain": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1AuthEdgeJetKeyRequest": { - "type": "object", - "required": [ - "edgeAuthToken", - "edgeHostUid" - ], - "properties": { - "edgeAuthToken": { - "type": "string" - }, - "edgeHostUid": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "v1AuthJetKeyRequest": { - "type": "object", - "required": [ - "allyAuthToken", - "hostClusterUid" - ], - "properties": { - "allyAuthToken": { - "type": "string" - }, - "hostClusterUid": { - "type": "string" - } - } - }, - "v1AuthLogin": { - "description": "Describes the credential details required for authentication", - "type": "object", - "properties": { - "emailId": { - "description": "Describes the email id required for the user to authenticate", - "type": "string" - }, - "org": { - "description": "Describes the user's organization name to login", - "type": "string" - }, - "password": { - "description": "Describes the password required for the user to authenticate", - "type": "string", - "format": "password" - } - } - }, - "v1AuthLoginEntity": { - "description": "Auth login entity", - "type": "object", - "properties": { - "authType": { - "type": "string", - "enum": [ - "password", - "sso" - ] - }, - "orgName": { - "type": "string" - }, - "redirectUrl": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1AuthLogins": { - "description": "Deprecated. Applicable auth logins with multiple orgs", - "type": "object", - "properties": { - "appEnv": { - "type": "string" - }, - "authType": { - "description": "Deprecated.", - "type": "string", - "enum": [ - "password", - "sso" - ] - }, - "orgName": { - "description": "Deprecated.", - "type": "string" - }, - "orgs": { - "type": "array", - "items": { - "description": "Auth login entity", - "type": "object", - "properties": { - "authType": { - "type": "string", - "enum": [ - "password", - "sso" - ] - }, - "orgName": { - "type": "string" - }, - "redirectUrl": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "redirectUrl": { - "description": "Deprecated.", - "type": "string", - "x-omitempty": false - } - } - }, - "v1AuthMfaLoginFinishRequest": { - "type": "object", - "properties": { - "_type": { - "type": "string" - }, - "authenticatorAttachment": { - "type": "string" - }, - "clientExtensionResults": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "deviceName": { - "type": "string" - }, - "id": { - "type": "string" - }, - "rawId": { - "type": "string", - "format": "url-encoded-base64" - }, - "response": { - "type": "object", - "properties": { - "authenticatorData": { - "type": "string", - "format": "url-encoded-base64" - }, - "clientDataJSON": { - "type": "string", - "format": "url-encoded-base64" - }, - "signature": { - "type": "string", - "format": "url-encoded-base64" - }, - "userHandle": { - "type": "string", - "format": "url-encoded-base64" - } - } - } - } - }, - "v1AuthServiceTokenRequest": { - "type": "object", - "properties": { - "authKey": { - "type": "string" - }, - "edgeHostUid": { - "type": "string" - }, - "hostClusterUid": { - "type": "string" - }, - "isSystem": { - "type": "boolean" - }, - "jetUid": { - "type": "string" - }, - "overlordUid": { - "type": "string" - }, - "serviceVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1AuthServiceTokenResponse": { - "type": "object", - "properties": { - "token": { - "type": "string" - } - } - }, - "v1AuthShellyLoginRequest": { - "type": "object", - "properties": { - "secret": { - "type": "string" - } - } - }, - "v1AuthToken": { - "type": "object", - "properties": { - "token": { - "type": "string" - } - } - }, - "v1AuthTokenRevoke": { - "properties": { - "tokens": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1AuthTokenSettings": { - "description": "System auth token settings", - "properties": { - "expiryTimeMinutes": { - "description": "Auth token expiry time in minutes", - "type": "integer", - "format": "int32", - "maximum": 1440, - "minimum": 15, - "x-omitempty": false - } - } - }, - "v1AwsAMI": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1AwsAccount": { - "description": "Aws cloud account information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1AwsAccounts": { - "description": "List of AWS accounts", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Aws cloud account information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AwsAmiReference": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "v1AwsAvailabilityZone": { - "description": "Distinct locations within an AWS Region that are engineered to be isolated from failures in other Zones", - "type": "object", - "properties": { - "name": { - "description": "AWS availability zone name", - "type": "string" - }, - "state": { - "description": "AWS availability zone state", - "type": "string" - }, - "zoneId": { - "description": "AWS availability zone id", - "type": "string" - } - } - }, - "v1AwsAvailabilityZones": { - "type": "object", - "required": [ - "zones" - ], - "properties": { - "zones": { - "description": "List of AWS Zones", - "type": "array", - "items": { - "description": "Distinct locations within an AWS Region that are engineered to be isolated from failures in other Zones", - "type": "object", - "properties": { - "name": { - "description": "AWS availability zone name", - "type": "string" - }, - "state": { - "description": "AWS availability zone state", - "type": "string" - }, - "zoneId": { - "description": "AWS availability zone id", - "type": "string" - } - } - } - } - } - }, - "v1AwsCloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "v1AwsCloudAccountCredentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "v1AwsCloudClusterConfigEntity": { - "description": "AWS cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - } - } - }, - "v1AwsCloudConfig": { - "description": "AwsCloudConfig is the Schema for the awscloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "AwsCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "status": { - "description": "AwsCloudConfigStatus defines the observed state of AwsCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "images": { - "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - } - } - }, - "v1AwsCloudConfigSpec": { - "description": "AwsCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "v1AwsCloudConfigStatus": { - "description": "AwsCloudConfigStatus defines the observed state of AwsCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "images": { - "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - }, - "v1AwsCloudCostSpec": { - "description": "Aws cloud account usage cost payload spec", - "type": "object", - "required": [ - "credentials" - ], - "properties": { - "accountId": { - "description": "AccountId of AWS cloud cost", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "filter": { - "description": "Aws cloud account usage cost payload filter. startTime and endTime should be within 12 months range from now.", - "type": "object", - "required": [ - "startTime" - ], - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "iamUserId": { - "description": "IAM UserId of AWS account", - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1AwsCloudCostSpecFilter": { - "description": "Aws cloud account usage cost payload filter. startTime and endTime should be within 12 months range from now.", - "type": "object", - "required": [ - "startTime" - ], - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "iamUserId": { - "description": "IAM UserId of AWS account", - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1AwsCloudCostSummary": { - "description": "AWS cloud account usage cost summary response data", - "type": "object", - "properties": { - "cost": { - "description": "AWS cloud account usage cost summary of monthlyCosts and totalCost", - "type": "object", - "properties": { - "monthlyCosts": { - "description": "Monthly cost of AWS cost", - "type": "array", - "items": { - "type": "object", - "properties": { - "amount": { - "description": "Amount for aws cloud cost", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "description": "Time duration for aws cloud cost", - "type": "integer" - } - } - } - }, - "total": { - "description": "Total cost of AWS cost", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1AwsCloudCostSummaryCloudCost": { - "description": "AWS cloud account usage cost summary of monthlyCosts and totalCost", - "type": "object", - "properties": { - "monthlyCosts": { - "description": "Monthly cost of AWS cost", - "type": "array", - "items": { - "type": "object", - "properties": { - "amount": { - "description": "Amount for aws cloud cost", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "description": "Time duration for aws cloud cost", - "type": "integer" - } - } - } - }, - "total": { - "description": "Total cost of AWS cost", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1AwsCloudCostSummaryMonthlyCost": { - "type": "object", - "properties": { - "amount": { - "description": "Amount for aws cloud cost", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "description": "Time duration for aws cloud cost", - "type": "integer" - } - } - }, - "v1AwsClusterConfig": { - "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "v1AwsCreditAccount": { - "type": "object", - "properties": { - "creditLimitInDollars": { - "type": "number", - "format": "float64" - }, - "loginCredentials": { - "type": "object", - "properties": { - "iamUser": { - "type": "string" - }, - "password": { - "type": "string", - "format": "password" - } - } - }, - "userCloudAccount": { - "properties": { - "accountId": { - "type": "string" - }, - "cloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1AwsCreditAccountEntity": { - "type": "object", - "properties": { - "creditLimitInDollars": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "creditUsedInDollars": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "loginCredentials": { - "type": "object", - "properties": { - "iamUser": { - "type": "string" - }, - "password": { - "type": "string", - "format": "password" - } - } - }, - "userCloudAccount": { - "properties": { - "accountId": { - "type": "string" - }, - "cloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1AwsFindImageRequest": { - "description": "AWS image name and credentials", - "type": "object", - "properties": { - "amiName": { - "description": "AWS image ami name", - "type": "string" - }, - "awsAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - } - } - }, - "v1AwsIamPolicy": { - "description": "Aws policy", - "type": "object", - "properties": { - "arn": { - "type": "string" - }, - "policyId": { - "type": "string" - }, - "policyName": { - "type": "string" - } - } - }, - "v1AwsImage": { - "description": "AWS image name and ami", - "type": "object", - "properties": { - "id": { - "description": "AWS image id", - "type": "string" - }, - "name": { - "description": "AWS image name", - "type": "string" - }, - "owner": { - "description": "AWS image owner id", - "type": "string" - } - } - }, - "v1AwsInstanceTypes": { - "description": "List of AWS instance types", - "type": "object", - "properties": { - "instanceTypes": { - "type": "array", - "items": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - } - } - }, - "v1AwsKeyPairs": { - "description": "List of AWS keypairs", - "type": "object", - "properties": { - "keyNames": { - "description": "Array of Aws Keypair names", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1AwsKmsKey": { - "description": "AWS KMS Key - gives you centralized control over the cryptographic keys used to protect your data.", - "type": "object", - "required": [ - "keyId", - "keyArn" - ], - "properties": { - "keyAlias": { - "description": "AWS KMS alias", - "type": "string" - }, - "keyArn": { - "description": "AWS KMS arn", - "type": "string" - }, - "keyId": { - "description": "AWS KMS keyid", - "type": "string" - } - } - }, - "v1AwsKmsKeyEntity": { - "description": "List of AWS Keys", - "type": "object", - "properties": { - "awsAccountId": { - "description": "The twelve-digit account ID of the Amazon Web Services account that owns the KMS key", - "type": "string" - }, - "enabled": { - "description": "Specifies whether the KMS key is enabled.", - "type": "boolean" - }, - "keyId": { - "description": "The globally unique identifier for the KMS key", - "type": "string" - } - } - }, - "v1AwsKmsKeys": { - "description": "List of AWS Keys", - "type": "object", - "required": [ - "kmsKeys" - ], - "properties": { - "kmsKeys": { - "type": "array", - "items": { - "description": "AWS KMS Key - gives you centralized control over the cryptographic keys used to protect your data.", - "type": "object", - "required": [ - "keyId", - "keyArn" - ], - "properties": { - "keyAlias": { - "description": "AWS KMS alias", - "type": "string" - }, - "keyArn": { - "description": "AWS KMS arn", - "type": "string" - }, - "keyId": { - "description": "AWS KMS keyid", - "type": "string" - } - } - } - } - } - }, - "v1AwsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "v1AwsLoginCredentials": { - "type": "object", - "properties": { - "iamUser": { - "type": "string" - }, - "password": { - "type": "string", - "format": "password" - } - } - }, - "v1AwsMachine": { - "description": "AWS cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "AWS cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "vpcId", - "ami" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "type": "string" - }, - "az": { - "type": "string" - }, - "dnsName": { - "type": "string" - }, - "iamProfile": { - "type": "string" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "phase": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnetId": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vpcId": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1AwsMachinePoolCloudConfigEntity": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "v1AwsMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1AwsMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1AwsMachineSpec": { - "description": "AWS cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "vpcId", - "ami" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "type": "string" - }, - "az": { - "type": "string" - }, - "dnsName": { - "type": "string" - }, - "iamProfile": { - "type": "string" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "phase": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnetId": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vpcId": { - "type": "string" - } - } - }, - "v1AwsMachines": { - "description": "AWS machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWS cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "AWS cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "vpcId", - "ami" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "type": "string" - }, - "az": { - "type": "string" - }, - "dnsName": { - "type": "string" - }, - "iamProfile": { - "type": "string" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "phase": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnetId": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vpcId": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AwsNic": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1AwsPartition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "v1AwsPolicies": { - "type": "object", - "required": [ - "policies" - ], - "properties": { - "policies": { - "type": "array", - "items": { - "description": "Aws policy", - "type": "object", - "properties": { - "arn": { - "type": "string" - }, - "policyId": { - "type": "string" - }, - "policyName": { - "type": "string" - } - } - } - } - } - }, - "v1AwsPolicyArnsSpec": { - "description": "Aws policy ARNs spec", - "type": "object", - "required": [ - "policyArns", - "account" - ], - "properties": { - "account": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "policyArns": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1AwsRegion": { - "description": "AWS region which represents separate geographic area.", - "type": "object", - "properties": { - "endpoint": { - "description": "AWS offer a regional endpoint that can used to make requests", - "type": "string" - }, - "name": { - "description": "Name of the AWS region", - "type": "string" - }, - "optInStatus": { - "description": "Enable your account to operate in the particular regions", - "type": "string" - } - } - }, - "v1AwsRegions": { - "type": "object", - "required": [ - "regions" - ], - "properties": { - "regions": { - "description": "List of AWS regions", - "type": "array", - "items": { - "description": "AWS region which represents separate geographic area.", - "type": "object", - "properties": { - "endpoint": { - "description": "AWS offer a regional endpoint that can used to make requests", - "type": "string" - }, - "name": { - "description": "Name of the AWS region", - "type": "string" - }, - "optInStatus": { - "description": "Enable your account to operate in the particular regions", - "type": "string" - } - } - } - } - } - }, - "v1AwsResourceFilter": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1AwsResourceReference": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "v1AwsRootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - }, - "v1AwsS3BucketCredentials": { - "description": "AWS S3 Bucket credentials", - "type": "object", - "required": [ - "credentials", - "bucket", - "region" - ], - "properties": { - "bucket": { - "description": "Name of AWS S3 bucket", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "folder": { - "description": "Name of the folder in the specified AWS S3 bucket.", - "type": "string" - }, - "region": { - "description": "Name of the available AWS region.", - "type": "string" - } - } - }, - "v1AwsSecurityGroups": { - "type": "object", - "required": [ - "groups" - ], - "properties": { - "groups": { - "type": "array", - "items": { - "description": "Aws security group", - "type": "object", - "properties": { - "groupId": { - "type": "string" - }, - "groupName": { - "type": "string" - }, - "ownerId": { - "type": "string" - } - } - } - } - } - }, - "v1AwsSecuritygroup": { - "description": "Aws security group", - "type": "object", - "properties": { - "groupId": { - "type": "string" - }, - "groupName": { - "type": "string" - }, - "ownerId": { - "type": "string" - } - } - }, - "v1AwsStorageTypes": { - "type": "object", - "properties": { - "storageTypes": { - "description": "List of AWS storage types", - "type": "array", - "items": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1AwsStsCredentials": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - }, - "v1AwsSubnet": { - "description": "A subnet is a range of IP addresses in a AWS VPC", - "properties": { - "az": { - "description": "Every subnet can only be associated with only one Availability Zone", - "type": "string" - }, - "isPrivate": { - "description": "Is this subnet private", - "type": "boolean" - }, - "mapPublicIpOnLaunch": { - "description": "Indicates whether instances launched in this subnet receive a public IPv4 address.", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Name of the subnet", - "type": "string" - }, - "subnetId": { - "description": "Id of the subnet", - "type": "string" - } - } - }, - "v1AwsSubnetEntity": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - }, - "v1AwsUserCloudAccount": { - "properties": { - "accountId": { - "type": "string" - }, - "cloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - } - } - }, - "v1AwsVolumeSize": { - "description": "AWS Volume Size entity", - "type": "object", - "properties": { - "sizeGB": { - "description": "AWS volume size", - "type": "integer" - } - } - }, - "v1AwsVolumeType": { - "description": "AWS Volume Type entity", - "type": "object", - "properties": { - "id": { - "description": "AWS volume type id", - "type": "string" - }, - "maxIops": { - "description": "Iops through put of volume type", - "type": "string" - }, - "maxThroughPut": { - "description": "Max through put of volume type", - "type": "string" - }, - "name": { - "description": "AWS Volume Type Name", - "type": "string" - } - } - }, - "v1AwsVpc": { - "description": "A virtual network dedicated to a AWS account", - "type": "object", - "required": [ - "vpcId" - ], - "properties": { - "cidrBlock": { - "type": "string" - }, - "name": { - "description": "Name of the virtual network", - "type": "string" - }, - "subnets": { - "description": "List of subnets associated to a AWS VPC", - "type": "array", - "items": { - "description": "A subnet is a range of IP addresses in a AWS VPC", - "properties": { - "az": { - "description": "Every subnet can only be associated with only one Availability Zone", - "type": "string" - }, - "isPrivate": { - "description": "Is this subnet private", - "type": "boolean" - }, - "mapPublicIpOnLaunch": { - "description": "Indicates whether instances launched in this subnet receive a public IPv4 address.", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Name of the subnet", - "type": "string" - }, - "subnetId": { - "description": "Id of the subnet", - "type": "string" - } - } - } - }, - "vpcId": { - "description": "Id of the virtual network", - "type": "string" - } - } - }, - "v1AwsVpcs": { - "description": "List of AWS VPCs", - "type": "object", - "required": [ - "vpcs" - ], - "properties": { - "vpcs": { - "type": "array", - "items": { - "description": "A virtual network dedicated to a AWS account", - "type": "object", - "required": [ - "vpcId" - ], - "properties": { - "cidrBlock": { - "type": "string" - }, - "name": { - "description": "Name of the virtual network", - "type": "string" - }, - "subnets": { - "description": "List of subnets associated to a AWS VPC", - "type": "array", - "items": { - "description": "A subnet is a range of IP addresses in a AWS VPC", - "properties": { - "az": { - "description": "Every subnet can only be associated with only one Availability Zone", - "type": "string" - }, - "isPrivate": { - "description": "Is this subnet private", - "type": "boolean" - }, - "mapPublicIpOnLaunch": { - "description": "Indicates whether instances launched in this subnet receive a public IPv4 address.", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Name of the subnet", - "type": "string" - }, - "subnetId": { - "description": "Id of the subnet", - "type": "string" - } - } - } - }, - "vpcId": { - "description": "Id of the virtual network", - "type": "string" - } - } - } - } - } - }, - "v1AzValidateEntity": { - "description": "Az validate entity", - "type": "object", - "properties": { - "azs": { - "description": "Gcp Azs", - "type": "array", - "items": { - "type": "string" - } - }, - "project": { - "description": "Gcp project", - "type": "string" - }, - "region": { - "description": "Gcp region", - "type": "string" - }, - "uid": { - "description": "Cloud account uid", - "type": "string" - } - } - }, - "v1AzureAccount": { - "description": "Azure account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "tenantId", - "clientId", - "clientSecret" - ], - "properties": { - "azureEnvironment": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "AzurePublicCloud", - "enum": [ - "AzureChinaCloud", - "AzurePublicCloud", - "AzureUSGovernment", - "AzureUSGovernmentCloud" - ] - }, - "clientId": { - "description": "Client ID(Directory ID) is a unique identifier generated by Azure AD that is tied to an application", - "type": "string" - }, - "clientSecret": { - "description": "ClientSecret is the secret associated with Client", - "type": "string" - }, - "settings": { - "description": "Cloud account settings", - "type": "object", - "properties": { - "disablePropertiesRequest": { - "description": "Will disable certain properties request to cloud and the input is collected directly from the user", - "type": "boolean", - "x-omitempty": false - } - } - }, - "tenantId": { - "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", - "type": "string" - }, - "tenantName": { - "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1AzureAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Azure account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "tenantId", - "clientId", - "clientSecret" - ], - "properties": { - "azureEnvironment": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "AzurePublicCloud", - "enum": [ - "AzureChinaCloud", - "AzurePublicCloud", - "AzureUSGovernment", - "AzureUSGovernmentCloud" - ] - }, - "clientId": { - "description": "Client ID(Directory ID) is a unique identifier generated by Azure AD that is tied to an application", - "type": "string" - }, - "clientSecret": { - "description": "ClientSecret is the secret associated with Client", - "type": "string" - }, - "settings": { - "description": "Cloud account settings", - "type": "object", - "properties": { - "disablePropertiesRequest": { - "description": "Will disable certain properties request to cloud and the input is collected directly from the user", - "type": "boolean", - "x-omitempty": false - } - } - }, - "tenantId": { - "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", - "type": "string" - }, - "tenantName": { - "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AzureAvailabilityZone": { - "description": "Azure availability zone", - "type": "object", - "properties": { - "name": { - "description": "Azure availability zone name", - "type": "string" - } - } - }, - "v1AzureCloudAccount": { - "type": "object", - "required": [ - "tenantId", - "clientId", - "clientSecret" - ], - "properties": { - "azureEnvironment": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "AzurePublicCloud", - "enum": [ - "AzureChinaCloud", - "AzurePublicCloud", - "AzureUSGovernment", - "AzureUSGovernmentCloud" - ] - }, - "clientId": { - "description": "Client ID(Directory ID) is a unique identifier generated by Azure AD that is tied to an application", - "type": "string" - }, - "clientSecret": { - "description": "ClientSecret is the secret associated with Client", - "type": "string" - }, - "settings": { - "description": "Cloud account settings", - "type": "object", - "properties": { - "disablePropertiesRequest": { - "description": "Will disable certain properties request to cloud and the input is collected directly from the user", - "type": "boolean", - "x-omitempty": false - } - } - }, - "tenantId": { - "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", - "type": "string" - }, - "tenantName": { - "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", - "type": "string" - } - } - }, - "v1AzureCloudClusterConfigEntity": { - "description": "Azure cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "subscriptionId", - "location", - "sshKey" - ], - "properties": { - "aadProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "apiServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "containerName": { - "type": "string" - }, - "controlPlaneSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "enablePrivateCluster": { - "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", - "type": "boolean" - }, - "infraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "location": { - "description": "Location is the Azure datacenter location", - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sshKey": { - "type": "string" - }, - "storageAccountName": { - "type": "string" - }, - "subscriptionId": { - "description": "Subscription ID is unique identifier for the subscription used to access Azure services", - "type": "string" - }, - "vnetCidrBlock": { - "type": "string" - }, - "vnetName": { - "description": "VNETName is the virtual network in which the cluster is to be provisioned.", - "type": "string" - }, - "vnetResourceGroup": { - "type": "string" - }, - "workerSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - } - } - } - }, - "v1AzureCloudConfig": { - "description": "AzureCloudConfig is the Schema for the azurecloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "subscriptionId", - "location", - "sshKey" - ], - "properties": { - "aadProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "apiServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "containerName": { - "type": "string" - }, - "controlPlaneSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "enablePrivateCluster": { - "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", - "type": "boolean" - }, - "infraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "location": { - "description": "Location is the Azure datacenter location", - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sshKey": { - "type": "string" - }, - "storageAccountName": { - "type": "string" - }, - "subscriptionId": { - "description": "Subscription ID is unique identifier for the subscription used to access Azure services", - "type": "string" - }, - "vnetCidrBlock": { - "type": "string" - }, - "vnetName": { - "description": "VNETName is the virtual network in which the cluster is to be provisioned.", - "type": "string" - }, - "vnetResourceGroup": { - "type": "string" - }, - "workerSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotVMOptions": { - "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "status": { - "description": "AzureCloudConfigStatus defines the observed state of AzureCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "images": { - "description": "Refers to Azure Shared Gallery image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "state": { - "type": "string" - }, - "subscriptionID": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - }, - "vhdImage": { - "description": "Mold always create VHD image for custom image, and this can be use as golden images", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1AzureCloudConfigSpec": { - "description": "AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "subscriptionId", - "location", - "sshKey" - ], - "properties": { - "aadProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "apiServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "containerName": { - "type": "string" - }, - "controlPlaneSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "enablePrivateCluster": { - "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", - "type": "boolean" - }, - "infraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "location": { - "description": "Location is the Azure datacenter location", - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sshKey": { - "type": "string" - }, - "storageAccountName": { - "type": "string" - }, - "subscriptionId": { - "description": "Subscription ID is unique identifier for the subscription used to access Azure services", - "type": "string" - }, - "vnetCidrBlock": { - "type": "string" - }, - "vnetName": { - "description": "VNETName is the virtual network in which the cluster is to be provisioned.", - "type": "string" - }, - "vnetResourceGroup": { - "type": "string" - }, - "workerSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotVMOptions": { - "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "v1AzureCloudConfigStatus": { - "description": "AzureCloudConfigStatus defines the observed state of AzureCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "images": { - "description": "Refers to Azure Shared Gallery image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "state": { - "type": "string" - }, - "subscriptionID": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - }, - "vhdImage": { - "description": "Mold always create VHD image for custom image, and this can be use as golden images", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1AzureClusterConfig": { - "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "subscriptionId", - "location", - "sshKey" - ], - "properties": { - "aadProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "apiServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "containerName": { - "type": "string" - }, - "controlPlaneSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "enablePrivateCluster": { - "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", - "type": "boolean" - }, - "infraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "location": { - "description": "Location is the Azure datacenter location", - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sshKey": { - "type": "string" - }, - "storageAccountName": { - "type": "string" - }, - "subscriptionId": { - "description": "Subscription ID is unique identifier for the subscription used to access Azure services", - "type": "string" - }, - "vnetCidrBlock": { - "type": "string" - }, - "vnetName": { - "description": "VNETName is the virtual network in which the cluster is to be provisioned.", - "type": "string" - }, - "vnetResourceGroup": { - "type": "string" - }, - "workerSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - } - }, - "v1AzureGroup": { - "description": "Azure group entity", - "type": "object", - "properties": { - "id": { - "description": "Azure group id", - "type": "string" - }, - "name": { - "description": "Azure group name", - "type": "string" - } - } - }, - "v1AzureGroups": { - "description": "List of Azure groups", - "type": "object", - "required": [ - "groups" - ], - "properties": { - "groups": { - "type": "array", - "items": { - "description": "Azure group entity", - "type": "object", - "properties": { - "id": { - "description": "Azure group id", - "type": "string" - }, - "name": { - "description": "Azure group name", - "type": "string" - } - } - } - } - } - }, - "v1AzureImage": { - "description": "Refers to Azure Shared Gallery image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "state": { - "type": "string" - }, - "subscriptionID": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1AzureInstanceTypes": { - "description": "List of Azure instance types", - "type": "object", - "properties": { - "instanceTypes": { - "type": "array", - "items": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - } - } - }, - "v1AzureMachine": { - "description": "Azure cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Azure cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "location", - "osDisk" - ], - "properties": { - "additionalTags": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "allocatePublicIP": { - "type": "boolean" - }, - "availabilityZone": { - "description": "Azure Machine Spec Availability zone", - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - } - } - }, - "image": { - "description": "Azure Machine Spec Image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "offer": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "instanceType": { - "type": "string" - }, - "location": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "sshPublicKey": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1AzureMachinePoolCloudConfigEntity": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - } - } - }, - "v1AzureMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotVMOptions": { - "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1AzureMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - } - } - }, - "managedPoolConfig": { - "type": "object", - "properties": { - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1AzureMachineSpec": { - "description": "Azure cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "location", - "osDisk" - ], - "properties": { - "additionalTags": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "allocatePublicIP": { - "type": "boolean" - }, - "availabilityZone": { - "description": "Azure Machine Spec Availability zone", - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - } - } - }, - "image": { - "description": "Azure Machine Spec Image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "offer": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "instanceType": { - "type": "string" - }, - "location": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "sshPublicKey": { - "type": "string" - } - } - }, - "v1AzureMachineSpecAvailabilityZone": { - "description": "Azure Machine Spec Availability zone", - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - } - } - }, - "v1AzureMachineSpecImage": { - "description": "Azure Machine Spec Image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "offer": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1AzureMachines": { - "description": "Azure machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Azure cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Azure cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "location", - "osDisk" - ], - "properties": { - "additionalTags": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "allocatePublicIP": { - "type": "boolean" - }, - "availabilityZone": { - "description": "Azure Machine Spec Availability zone", - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - } - } - }, - "image": { - "description": "Azure Machine Spec Image", - "type": "object", - "properties": { - "gallery": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "offer": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "instanceType": { - "type": "string" - }, - "location": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "sshPublicKey": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1AzureManagedMachinePoolConfig": { - "type": "object", - "properties": { - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "v1AzureNic": { - "description": "AWS network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1AzureOSDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "v1AzurePrivateDnsZone": { - "description": "Azure Private DNS zone entity", - "type": "object", - "properties": { - "id": { - "description": "Fully qualified resource Id for the resource", - "type": "string" - }, - "location": { - "description": "The Azure Region where the resource lives", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" - } - } - }, - "v1AzurePrivateDnsZones": { - "description": "List of Azure storage accounts", - "type": "object", - "properties": { - "privateDnsZones": { - "type": "array", - "items": { - "description": "Azure Private DNS zone entity", - "type": "object", - "properties": { - "id": { - "description": "Fully qualified resource Id for the resource", - "type": "string" - }, - "location": { - "description": "The Azure Region where the resource lives", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" - } - } - } - } - } - }, - "v1AzureRegion": { - "description": "Azure region entity", - "type": "object", - "properties": { - "displayName": { - "description": "Azure region displayname", - "type": "string" - }, - "name": { - "description": "Azure region name", - "type": "string" - }, - "zones": { - "description": "List of zones associated to a particular Azure region", - "type": "array", - "items": { - "description": "Azure availability zone", - "type": "object", - "properties": { - "name": { - "description": "Azure availability zone name", - "type": "string" - } - } - } - } - } - }, - "v1AzureRegions": { - "description": "List of Azure regions", - "type": "object", - "required": [ - "regions" - ], - "properties": { - "regions": { - "type": "array", - "items": { - "description": "Azure region entity", - "type": "object", - "properties": { - "displayName": { - "description": "Azure region displayname", - "type": "string" - }, - "name": { - "description": "Azure region name", - "type": "string" - }, - "zones": { - "description": "List of zones associated to a particular Azure region", - "type": "array", - "items": { - "description": "Azure availability zone", - "type": "object", - "properties": { - "name": { - "description": "Azure availability zone name", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1AzureResourceGroupList": { - "description": "List of Azure resource group", - "type": "object", - "properties": { - "resourceGroupList": { - "type": "array", - "items": { - "description": "Azure resource Group is a container that holds related resources for an Azure solution", - "type": "object", - "properties": { - "id": { - "description": "The ID of the resource group", - "type": "string" - }, - "location": { - "description": "The location of the resource group. It cannot be changed after the resource group has been created", - "type": "string" - }, - "name": { - "description": "The type of the resource group", - "type": "string" - } - } - } - } - } - }, - "v1AzureStorageAccountEntity": { - "description": "Azure Storage Account Entity", - "type": "object", - "properties": { - "storageAccountTypes": { - "type": "array", - "items": { - "description": "Azure storage account entity", - "type": "object", - "properties": { - "id": { - "description": "Azure storage account id", - "type": "string" - }, - "name": { - "description": "Azure storage account name", - "type": "string" - } - } - } - } - } - }, - "v1AzureStorageAccounts": { - "description": "List of Azure storage accounts", - "type": "object", - "properties": { - "accounts": { - "type": "array", - "items": { - "description": "Azure storage account provides a unique namespace for your Azure resources", - "type": "object", - "properties": { - "id": { - "description": "Fully qualified resource ID for the resource", - "type": "string" - }, - "kind": { - "description": "The kind of the resource", - "type": "string" - }, - "location": { - "description": "The geo-location where the resource lives", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" - } - } - } - } - } - }, - "v1AzureStorageConfig": { - "description": "Azure storage config object", - "type": "object", - "required": [ - "resourceGroup", - "containerName", - "storageName", - "credentials" - ], - "properties": { - "containerName": { - "description": "Azure container name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "resourceGroup": { - "description": "Azure resource group name, to which the storage account is mapped", - "type": "string" - }, - "sku": { - "description": "Azure sku", - "type": "string" - }, - "storageName": { - "description": "Azure storage name", - "type": "string" - } - } - }, - "v1AzureStorageContainers": { - "description": "List of Azure storage containers", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Azure storage container organizes a set of blobs, similar to a directory in a file system", - "type": "object", - "properties": { - "id": { - "description": "Fully qualified resource ID for the resource.", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" - }, - "type": { - "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\"", - "type": "string" - } - } - } - } - } - }, - "v1AzureStorageTypes": { - "description": "List of Azure storage types", - "type": "object", - "properties": { - "storageTypes": { - "type": "array", - "items": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1AzureSubscriptionList": { - "description": "List of Azure subscription", - "type": "object", - "properties": { - "subscriptionList": { - "type": "array", - "items": { - "description": "Azure Subscription Type", - "type": "object", - "properties": { - "authorizationSource": { - "description": "The authorization source of the request. Valid values are one or more combinations of Legacy, RoleBased, Bypassed, Direct and Management", - "type": "string" - }, - "displayName": { - "description": "The subscription display name", - "type": "string" - }, - "state": { - "description": "The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and Deleted.", - "type": "string" - }, - "subscriptionId": { - "description": "The subscription ID", - "type": "string" - } - } - } - } - } - }, - "v1AzureVHDImage": { - "description": "Mold always create VHD image for custom image, and this can be use as golden images", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1AzureVhdUrlEntity": { - "description": "Azure vhd url entity", - "type": "object", - "properties": { - "name": { - "description": "The name of the resource", - "type": "string" - }, - "url": { - "description": "The url of the Azure Vhd", - "type": "string" - } - } - }, - "v1AzureVirtualNetworkList": { - "description": "List of Azure virtual network", - "type": "object", - "properties": { - "virtualNetworkList": { - "type": "array", - "items": { - "description": "Azure virtual network is the fundamental building block for your private network in Azure.", - "type": "object", - "properties": { - "addressSpaces": { - "description": "Location of the virtual network", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "id": { - "description": "The ID of the resource group", - "type": "string" - }, - "location": { - "description": "Location of the virtual network", - "type": "string" - }, - "name": { - "description": "Name of the virtual network", - "type": "string" - }, - "subnets": { - "description": "List of subnets associated with Azure VPC", - "type": "array", - "items": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - }, - "type": { - "description": "Type of the virtual network", - "type": "string" - } - } - } - } - } - }, - "v1AzureZoneEntity": { - "description": "List of Azure zone", - "type": "object", - "properties": { - "zoneList": { - "type": "array", - "items": { - "description": "Azure availability zone entity", - "type": "object", - "properties": { - "id": { - "description": "Azure availability zone id", - "type": "string" - } - } - } - } - } - }, - "v1BackupLocationConfig": { - "description": "Backup location configuration", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1BackupRestoreStatusMeta": { - "description": "Backup restored status", - "properties": { - "backupName": { - "type": "string" - }, - "destinationClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "restoreState": { - "type": "string" - } - } - }, - "v1BackupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1BackupStatusConfig": { - "description": "Backup config", - "properties": { - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1BackupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1BasicOciRegistry": { - "description": "Basic oci registry information", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Basic oci registry spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "baseContentPath": { - "description": "OCI registry content base path", - "type": "string" - }, - "basePath": { - "description": "OCI registry api base path", - "type": "string" - }, - "endpoint": { - "description": "OCI registry endpoint", - "type": "string" - }, - "providerType": { - "type": "string", - "default": "helm", - "enum": [ - "helm", - "zarf", - "pack" - ] - }, - "registryUid": { - "description": "Basic oci registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - } - } - }, - "v1BasicOciRegistrySpec": { - "description": "Basic oci registry spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "baseContentPath": { - "description": "OCI registry content base path", - "type": "string" - }, - "basePath": { - "description": "OCI registry api base path", - "type": "string" - }, - "endpoint": { - "description": "OCI registry endpoint", - "type": "string" - }, - "providerType": { - "type": "string", - "default": "helm", - "enum": [ - "helm", - "zarf", - "pack" - ] - }, - "registryUid": { - "description": "Basic oci registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1Billing": { - "description": "billing preference", - "properties": { - "billingDay": { - "type": "integer" - }, - "tierPricing": { - "description": "tier price", - "properties": { - "alloyPricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - }, - "purePricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - } - } - } - } - }, - "v1BrokerLogin": { - "description": "Request for broker login request", - "type": "object", - "properties": { - "subscriberSubjects": { - "description": "subjects that client need to subscribe", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1BrokerToken": { - "description": "Response for broker login request", - "type": "object", - "properties": { - "maxAllowedClients": { - "description": "maximum number of clients that can subscribe to the subject", - "type": "integer" - }, - "msgCtxData": { - "description": "message context data can be used as contextual information for the message exchange", - "additionalProperties": { - "type": "string" - } - }, - "publisherSubjects": { - "description": "subjects that client can publish", - "type": "array", - "items": { - "type": "string" - } - }, - "subscriberSubjects": { - "description": "subjects that client has subscribed", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1BulkDeleteFailure": { - "properties": { - "errMsg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1BulkDeleteRequest": { - "required": [ - "uids" - ], - "properties": { - "uids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1BulkDeleteResponse": { - "properties": { - "deletedCount": { - "type": "integer", - "x-omitempty": false - }, - "failures": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "errMsg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "x-omitempty": false - }, - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1BulkEvents": { - "description": "Describes a list component events' details", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the component event details", - "type": "object", - "properties": { - "involvedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "message": { - "description": "Describes message associated with the event", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "reason": { - "description": "Describes the reason for the event", - "type": "string" - }, - "relatedObject": { - "description": "Object for which the event is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "severity": { - "description": "Describes the gravitas for the event", - "type": "string" - }, - "source": { - "description": "Describes the origin for the event", - "type": "object", - "properties": { - "component": { - "description": "Describes the component where event originated", - "type": "string" - }, - "host": { - "description": "Describes the host where event originated", - "type": "string" - } - } - } - } - } - }, - "v1CPU": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "v1CPUPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "v1Card": { - "description": "Card details object", - "properties": { - "brand": { - "description": "Card brand", - "type": "string" - }, - "country": { - "description": "Country name the card belongs", - "type": "string" - }, - "expYear": { - "description": "Expiry year of the card", - "type": "number", - "format": "uint64" - }, - "fingerPrint": { - "description": "Finger print", - "type": "string" - }, - "funding": { - "description": "Funding", - "type": "string" - }, - "last4": { - "description": "Last 4 digit of the card", - "type": "string" - } - } - }, - "v1Cert": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1Certificate": { - "description": "Certificate details", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - }, - "v1CertificateAuthority": { - "description": "Certificate Authority", - "type": "object", - "properties": { - "certificates": { - "type": "array", - "items": { - "description": "Certificate details", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - }, - "v1Channel": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - }, - "v1CleanUpResource": { - "description": "Resources of tenant", - "type": "object", - "properties": { - "activeResources": { - "description": "Active resources of tenant", - "type": "object", - "properties": { - "activeResources": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "tenantStatus": { - "description": "Tenant CleanUp Status", - "type": "object", - "properties": { - "cleanUpError": { - "type": "string" - }, - "cleanUpStages": { - "type": "string" - }, - "cleanUpTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "isInProgress": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1CloudAccountMeta": { - "description": "Cloud account meta information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1CloudAccountMetadata": { - "description": "Cloud account metadata summary", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - } - } - }, - "v1CloudAccountSettings": { - "description": "Cloud account settings", - "type": "object", - "properties": { - "disablePropertiesRequest": { - "description": "Will disable certain properties request to cloud and the input is collected directly from the user", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1CloudAccountStatus": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - }, - "v1CloudAccountSummary": { - "description": "Cloud account summary", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Cloud account spec summary", - "type": "object", - "properties": { - "accountId": { - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1CloudAccountUidEntity": { - "description": "Cloud account uid entity", - "type": "object", - "properties": { - "uid": { - "description": "Cloud account uid", - "type": "string" - } - } - }, - "v1CloudAccountsMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cloud account metadata summary", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - } - } - } - } - } - }, - "v1CloudAccountsPatch": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - }, - "v1CloudAccountsSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cloud account summary", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Cloud account spec summary", - "type": "object", - "properties": { - "accountId": { - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1CloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "v1CloudConfigMeta": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "machinePools": { - "description": "Machine pool meta information", - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "healthy": { - "description": "number of healthy machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "infraProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "maintenanceMode": { - "description": "number of machines under maintenance", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - }, - "uid": { - "description": "Cluster's cloud config uid", - "type": "string" - } - } - }, - "v1CloudCost": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1CloudCostDataPoint": { - "description": "Cloud cost data point information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1CloudInstanceRateConfig": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "v1CloudMachineStatus": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1CloudRate": { - "description": "Cloud estimated rate information", - "type": "object", - "properties": { - "compute": { - "description": "Compute estimated rate information", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "type": { - "type": "string" - } - } - }, - "storage": { - "type": "array", - "items": { - "description": "Storage estimated rate information", - "type": "object", - "properties": { - "iops": { - "type": "number", - "format": "float64" - }, - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "sizeGB": { - "type": "number", - "format": "float64" - }, - "throughput": { - "type": "number", - "format": "float64" - }, - "type": { - "type": "string" - } - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1CloudResourceMetadata": { - "description": "Cloud resource metadata", - "type": "object", - "properties": { - "instanceTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - }, - "storageTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1CloudSpotPrice": { - "description": "Spot price entity of a particular cloud type", - "type": "object", - "properties": { - "spotPrice": { - "description": "Spot price of a resource for a particular cloud", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1CloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "v1ClusterBackup": { - "description": "Cluster Backup", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster Backup Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "config": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - }, - "status": { - "description": "Cluster Backup Status", - "properties": { - "clusterBackupStatuses": { - "type": "array", - "items": { - "description": "Cluster Backup Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupConfig": { - "description": "Backup config", - "properties": { - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "backupLocationConfig": { - "description": "Backup location configuration", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupRequestUid": { - "type": "string" - }, - "backupStatusMeta": { - "type": "array", - "items": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "restoreStatusMeta": { - "type": "array", - "items": { - "description": "Backup restored status", - "properties": { - "backupName": { - "type": "string" - }, - "destinationClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "restoreState": { - "type": "string" - } - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterBackupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "v1ClusterBackupLocationType": { - "description": "Cluster backup location type", - "required": [ - "locationType" - ], - "properties": { - "locationType": { - "type": "string" - } - } - }, - "v1ClusterBackupSpec": { - "description": "Cluster Backup Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "config": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - }, - "v1ClusterBackupStatus": { - "description": "Cluster Backup Status", - "properties": { - "clusterBackupStatuses": { - "type": "array", - "items": { - "description": "Cluster Backup Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupConfig": { - "description": "Backup config", - "properties": { - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "backupLocationConfig": { - "description": "Backup location configuration", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupRequestUid": { - "type": "string" - }, - "backupStatusMeta": { - "type": "array", - "items": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "restoreStatusMeta": { - "type": "array", - "items": { - "description": "Backup restored status", - "properties": { - "backupName": { - "type": "string" - }, - "destinationClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "restoreState": { - "type": "string" - } - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterBackupStatusMeta": { - "description": "Cluster Backup Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupConfig": { - "description": "Backup config", - "properties": { - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "backupLocationConfig": { - "description": "Backup location configuration", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupRequestUid": { - "type": "string" - }, - "backupStatusMeta": { - "type": "array", - "items": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "restoreStatusMeta": { - "type": "array", - "items": { - "description": "Backup restored status", - "properties": { - "backupName": { - "type": "string" - }, - "destinationClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "restoreState": { - "type": "string" - } - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterComplianceOnDemandConfig": { - "description": "Cluster compliance scan on demand configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan config for kube bench driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan config for kube hunter driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan config for sonobuoy driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "syft": { - "description": "Cluster compliance scan config for syft driver", - "properties": { - "config": { - "description": "Cluster compliance scan specification", - "properties": { - "format": { - "type": "string", - "enum": [ - "cyclonedx-json", - "github-json", - "spdx-json", - "syft-json" - ] - }, - "labelSelector": { - "type": "string" - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "cluster", - "namespace", - "label-selector", - "pod" - ] - } - } - }, - "runScan": { - "type": "boolean" - } - } - } - } - }, - "v1ClusterComplianceScan": { - "description": "Cluster Compliance Scan", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverSpec": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan driver spec", - "properties": { - "config": { - "description": "Compliance Scan config", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "isClusterConfig": { - "type": "boolean" - } - } - } - } - } - } - } - }, - "v1ClusterComplianceScanKubeBenchConfig": { - "description": "Cluster compliance scan config for kube bench driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "v1ClusterComplianceScanKubeBenchScheduleConfig": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "v1ClusterComplianceScanKubeHunterConfig": { - "description": "Cluster compliance scan config for kube hunter driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "v1ClusterComplianceScanKubeHunterScheduleConfig": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "v1ClusterComplianceScanLogSpec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "v1ClusterComplianceScanLogs": { - "description": "Cluster compliance scan Logs", - "properties": { - "kubeBenchLogs": { - "type": "array", - "items": { - "description": "Cluster compliance scan KubeBench Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeBench Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "kubeHunterLogs": { - "type": "array", - "items": { - "description": "Cluster compliance scan KubeHunter Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeHunter Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilites": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "sonobuoyLogs": { - "type": "array", - "items": { - "description": "Cluster compliance scan Sonobuoy Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Sonobuoy Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "syftLogs": { - "type": "array", - "items": { - "description": "Cluster Compliance Scan Syft Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Syft Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Report", - "properties": { - "dependencies": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanContext": { - "description": "Compliance Scan Syft Context", - "properties": { - "format": { - "type": "string" - }, - "labelSelector": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterComplianceScanSonobuoyConfig": { - "description": "Cluster compliance scan config for sonobuoy driver", - "properties": { - "runScan": { - "type": "boolean" - } - } - }, - "v1ClusterComplianceScanSonobuoyScheduleConfig": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "v1ClusterComplianceScanSpec": { - "description": "Cluster compliance scan Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverSpec": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan driver spec", - "properties": { - "config": { - "description": "Compliance Scan config", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "isClusterConfig": { - "type": "boolean" - } - } - } - } - } - }, - "v1ClusterComplianceScanSyftConfig": { - "description": "Cluster compliance scan config for syft driver", - "properties": { - "config": { - "description": "Cluster compliance scan specification", - "properties": { - "format": { - "type": "string", - "enum": [ - "cyclonedx-json", - "github-json", - "spdx-json", - "syft-json" - ] - }, - "labelSelector": { - "type": "string" - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "cluster", - "namespace", - "label-selector", - "pod" - ] - } - } - }, - "runScan": { - "type": "boolean" - } - } - }, - "v1ClusterComplianceScanSyftDriverConfig": { - "description": "Cluster compliance scan specification", - "properties": { - "format": { - "type": "string", - "enum": [ - "cyclonedx-json", - "github-json", - "spdx-json", - "syft-json" - ] - }, - "labelSelector": { - "type": "string" - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "cluster", - "namespace", - "label-selector", - "pod" - ] - } - } - }, - "v1ClusterComplianceScheduleConfig": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - }, - "v1ClusterCondition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1ClusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute contains additional cluster metadata information.", - "type": "string" - }, - "clusterRbac": { - "description": "Deprecated. Use clusterResources", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "machineHealthConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", - "type": "boolean" - } - } - }, - "v1ClusterConfigEntity": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "v1ClusterConfigResponse": { - "type": "object", - "properties": { - "hostClusterConfig": { - "properties": { - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - }, - "v1ClusterDefinitionEntity": { - "description": "Cluster definition entity", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster definition spec entity", - "type": "object", - "required": [ - "profiles", - "cloudType" - ], - "properties": { - "cloudType": { - "type": "string" - }, - "profiles": { - "description": "Cluster definition profiles", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster definition profile entity", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterDefinitionProfileEntity": { - "description": "Cluster definition profile entity", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - }, - "v1ClusterDefinitionSpecEntity": { - "description": "Cluster definition spec entity", - "type": "object", - "required": [ - "profiles", - "cloudType" - ], - "properties": { - "cloudType": { - "type": "string" - }, - "profiles": { - "description": "Cluster definition profiles", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster definition profile entity", - "type": "object", - "required": [ - "uid" - ], - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - }, - "v1ClusterEdgeInstallerConfig": { - "properties": { - "installerDownloadLinks": { - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1ClusterFeatureActor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ClusterFeatureSchedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - }, - "v1ClusterFips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "v1ClusterFipsMode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - }, - "v1ClusterGroup": { - "description": "Cluster group information", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster group specifications", - "properties": { - "clusterProfileTemplates": { - "description": "ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec. It consists of list of add on profiles at a cluster group level which will be enforced on all virtual cluster. ClusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster group cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "clustersConfig": { - "description": "Clusters config of cluster group", - "properties": { - "endpointType": { - "description": "Host cluster endpoint type", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClustersConfig": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "kubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "limitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "values": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "hostCluster" - ] - } - } - }, - "status": { - "description": "Cluster group status", - "properties": { - "isActive": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterGroupClusterRef": { - "description": "Cluster group cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - }, - "v1ClusterGroupClustersConfig": { - "description": "Clusters config of cluster group", - "properties": { - "endpointType": { - "description": "Host cluster endpoint type", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClustersConfig": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "kubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "limitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "values": { - "type": "string" - } - } - }, - "v1ClusterGroupEntity": { - "description": "Cluster group information", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster group specifications request entity", - "properties": { - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster group cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "clustersConfig": { - "description": "Clusters config of cluster group", - "properties": { - "endpointType": { - "description": "Host cluster endpoint type", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClustersConfig": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "kubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "limitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "values": { - "type": "string" - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "hostCluster" - ] - } - } - } - } - }, - "v1ClusterGroupHostClusterConfig": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterGroupHostClusterEntity": { - "description": "Clusters and clusters config of cluster group", - "properties": { - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster group cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "clustersConfig": { - "description": "Clusters config of cluster group", - "properties": { - "endpointType": { - "description": "Host cluster endpoint type", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClustersConfig": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "kubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "limitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "values": { - "type": "string" - } - } - } - } - }, - "v1ClusterGroupLimitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "v1ClusterGroupResource": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ClusterGroupSpec": { - "description": "Cluster group specifications", - "properties": { - "clusterProfileTemplates": { - "description": "ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec. It consists of list of add on profiles at a cluster group level which will be enforced on all virtual cluster. ClusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster group cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "clustersConfig": { - "description": "Clusters config of cluster group", - "properties": { - "endpointType": { - "description": "Host cluster endpoint type", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClustersConfig": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "kubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "limitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "values": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "hostCluster" - ] - } - } - }, - "v1ClusterGroupSpecEntity": { - "description": "Cluster group specifications request entity", - "properties": { - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster group cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "clustersConfig": { - "description": "Clusters config of cluster group", - "properties": { - "endpointType": { - "description": "Host cluster endpoint type", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClustersConfig": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "clusterUid": { - "type": "string" - }, - "endpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "kubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "limitConfig": { - "description": "Cluster group limit config", - "properties": { - "cpu": { - "description": "Deprecated. Use field cpuMilliCore", - "type": "integer", - "format": "int32" - }, - "cpuMilliCore": { - "description": "CPU in milli cores", - "type": "integer", - "format": "int32" - }, - "memory": { - "description": "Deprecated. Use field memoryMiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "Memory in MiB", - "type": "integer", - "format": "int32" - }, - "overSubscription": { - "description": "Over subscription percentage", - "type": "integer", - "format": "int32" - }, - "storageGiB": { - "description": "Storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "values": { - "type": "string" - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "hostCluster" - ] - } - } - }, - "v1ClusterGroupStatus": { - "description": "Cluster group status", - "properties": { - "isActive": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1ClusterGroupSummary": { - "description": "Cluster group summay", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster group summay spec", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - } - }, - "cpu": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "endpointType": { - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "hostClustersCount": { - "type": "integer", - "x-omitempty": false - }, - "memory": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "scope": { - "type": "string" - }, - "virtualClustersCount": { - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterGroupSummarySpec": { - "description": "Cluster group summay spec", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - } - }, - "cpu": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "endpointType": { - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "hostClustersCount": { - "type": "integer", - "x-omitempty": false - }, - "memory": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "scope": { - "type": "string" - }, - "virtualClustersCount": { - "type": "integer", - "x-omitempty": false - } - } - }, - "v1ClusterGroupsDeveloperCreditUsage": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocatedCredit": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - }, - "usedCredit": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterGroupsHostClusterMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Object scope identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterGroupsHostClusterSummary": { - "type": "object", - "required": [ - "summaries" - ], - "properties": { - "summaries": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster group summay", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster group summay spec", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - } - }, - "cpu": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "endpointType": { - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - }, - "hostClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "hostClustersCount": { - "type": "integer", - "x-omitempty": false - }, - "memory": { - "description": "Cluster group resource allocated and usage information", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "used": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "scope": { - "type": "string" - }, - "virtualClustersCount": { - "type": "integer", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1ClusterHelmChart": { - "description": "Cluster helm chart metadata", - "properties": { - "localName": { - "type": "string" - }, - "matchedRegistries": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster helm registry information", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ClusterHelmCharts": { - "description": "Cluster helm charts metadata", - "properties": { - "charts": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster helm chart metadata", - "properties": { - "localName": { - "type": "string" - }, - "matchedRegistries": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster helm registry information", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterHelmRegistry": { - "description": "Cluster helm registry information", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ClusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "v1ClusterKubeBenchLogStatus": { - "description": "Cluster compliance scan KubeBench Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterKubeHunterLogStatus": { - "description": "Cluster compliance scan KubeHunter Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilites": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterKubernetesDistroType": { - "type": "string", - "default": "k3s", - "enum": [ - "k3s", - "cncf_k8s" - ] - }, - "v1ClusterLocation": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "v1ClusterLogFetcher": { - "description": "Cluster Log Fetcher", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster Log Fetcher Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "log": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster Log Fetcher Status", - "properties": { - "state": { - "type": "string" - } - } - } - } - }, - "v1ClusterLogFetcherK8sRequest": { - "description": "Cluster Log Fetcher K8s", - "properties": { - "labelSelector": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1ClusterLogFetcherNodeRequest": { - "description": "Cluster Log Fetcher Node Request", - "properties": { - "logs": { - "description": "Array of logs", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1ClusterLogFetcherRequest": { - "description": "Cluster Log Fetcher Request", - "properties": { - "duration": { - "description": "Duration for which log is requested", - "type": "integer", - "format": "int64", - "default": 10 - }, - "k8s": { - "description": "Cluster Log Fetcher K8s", - "properties": { - "labelSelector": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "mode": { - "description": "Accepted Values - [\"cluster\", \"app\"]. if \"app\" then logs will be fetched from the virtual cluster", - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "app" - ] - }, - "noOfLines": { - "description": "No of lines of logs requested", - "type": "integer", - "format": "int64", - "default": 1000 - }, - "node": { - "description": "Cluster Log Fetcher Node Request", - "properties": { - "logs": { - "description": "Array of logs", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterLogFetcherSpec": { - "description": "Cluster Log Fetcher Spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "log": { - "type": "string" - } - } - }, - "v1ClusterLogFetcherStatus": { - "description": "Cluster Log Fetcher Status", - "properties": { - "state": { - "type": "string" - } - } - }, - "v1ClusterManifest": { - "description": "Cluster manifest information", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1ClusterManifests": { - "description": "Cluster manifests information", - "properties": { - "manifests": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster manifest information", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterMeta": { - "description": "Active cluster meta", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "clusterType": { - "type": "string" - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectName": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "uid": { - "type": "string" - } - } - }, - "v1ClusterMetaAttributeEntity": { - "description": "Cluster additional metadata entity", - "type": "object", - "properties": { - "clusterMetaAttribute": { - "type": "string" - } - } - }, - "v1ClusterMetaSpecLocation": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "v1ClusterMetaStatusCost": { - "description": "Cluster meta Cost information", - "type": "object", - "properties": { - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ClusterMetaStatusHealth": { - "description": "Cluster meta health information", - "type": "object", - "properties": { - "isHeartBeatFailed": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterMetaStatusUpdates": { - "description": "Cluster meta updates information", - "type": "object", - "properties": { - "isUpdatesPending": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1ClusterNamespace": { - "description": "Cluster's namespace", - "properties": { - "namespace": { - "type": "string" - }, - "pvcCount": { - "type": "number", - "format": "int32" - } - } - }, - "v1ClusterNamespaceResource": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - }, - "status": { - "description": "Cluster namespace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterNamespaceResourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - }, - "v1ClusterNamespaceResourceInputEntity": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - }, - "v1ClusterNamespaceResources": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - }, - "status": { - "description": "Cluster namespace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1ClusterNamespaceResourcesUpdateEntity": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - } - } - }, - "v1ClusterNamespaceSpec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - }, - "v1ClusterNamespaceStatus": { - "description": "Cluster namespace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterNamespaces": { - "description": "Cluster's available namespaces", - "properties": { - "namespaces": { - "type": "array", - "items": { - "description": "Cluster's namespace", - "properties": { - "namespace": { - "type": "string" - }, - "pvcCount": { - "type": "number", - "format": "int32" - } - } - } - } - } - }, - "v1ClusterNotificationStatus": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1ClusterNotificationUpdateEntity": { - "description": "Cluster input for notification update", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile notification update request payload", - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - }, - "spcApplySettings": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - } - } - } - } - }, - "v1ClusterPackManifestStatus": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ClusterPackStatus": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ClusterPreference": { - "description": "cluster preference", - "properties": { - "archivalIntervalInHour": { - "description": "clusters cleanup interval post deletion", - "type": "integer" - }, - "deletePeriodInHour": { - "description": "clusters deleted before delete period are eligible for cleanup", - "type": "integer" - }, - "healthPollIntervalInMinutes": { - "description": "clusters health poll interval", - "type": "integer", - "maximum": 60, - "minimum": 3 - }, - "monitorIntervalInMinutes": { - "description": "clusters state and consistency monitor", - "type": "integer" - } - } - }, - "v1ClusterProfile": { - "description": "ClusterProfile is the Schema for the clusterprofiles 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "ClusterProfileTemplate can be in draft mode, or published mode User only see the latest published template, and (or) the draft template User can apply either the draft version or the latest published version to a cluster when user create a draft version, just copy the Published template, increment the version, and keep changing the draft template without increment the draft version when user publish a draft, the version is fixed, and won't be able to make any modification on published template For each clusterprofile that has a published version, there will be a ClusterProfileArchive automatically created when user publish a draft, the published version will also be copied over to the corresponding ClusterProfileArchive it is just in case in the future for whatever reason we may want to expose earlier versions", - "type": "object", - "properties": { - "draft": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "published": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "version": { - "type": "string" - }, - "versions": { - "description": "Cluster profile's list of all the versions", - "type": "array", - "items": { - "description": "Cluster profile with version", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "ClusterProfileStatus defines the observed state of ClusterProfile", - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - }, - "inUseClusterUids": { - "description": "Deprecated. Use inUseClusters", - "type": "array", - "items": { - "type": "string" - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "isPublished": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterProfileCloneEntity": { - "description": "Cluster profile clone request payload", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster profile clone metadata", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Cloned cluster profile name", - "type": "string" - }, - "target": { - "description": "Cluster profile clone meta input entity", - "type": "object", - "required": [ - "scope" - ], - "properties": { - "projectUid": { - "description": "Cloned cluster profile project uid", - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - } - } - }, - "version": { - "description": "Cloned cluster profile version", - "type": "string" - } - } - } - } - }, - "v1ClusterProfileCloneMetaInputEntity": { - "description": "Cluster profile clone metadata", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Cloned cluster profile name", - "type": "string" - }, - "target": { - "description": "Cluster profile clone meta input entity", - "type": "object", - "required": [ - "scope" - ], - "properties": { - "projectUid": { - "description": "Cloned cluster profile project uid", - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - } - } - }, - "version": { - "description": "Cloned cluster profile version", - "type": "string" - } - } - }, - "v1ClusterProfileCloneTarget": { - "description": "Cluster profile clone meta input entity", - "type": "object", - "required": [ - "scope" - ], - "properties": { - "projectUid": { - "description": "Cloned cluster profile project uid", - "type": "string" - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - } - } - }, - "v1ClusterProfileEntity": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "template": { - "description": "Cluster profile template spec", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - } - } - }, - "variables": { - "description": "List of unique variable fields defined for a cluster profile with schema constraints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Unique variable field with schema definition", - "type": "object", - "required": [ - "name" - ], - "properties": { - "defaultValue": { - "description": "The default value of the variable", - "type": "string" - }, - "description": { - "description": "Variable description", - "type": "string" - }, - "displayName": { - "description": "Unique display name of the variable", - "type": "string" - }, - "format": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "hidden": { - "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "immutable": { - "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "isSensitive": { - "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Variable name", - "type": "string" - }, - "regex": { - "description": "Regular expression pattern which the variable value must match", - "type": "string" - }, - "required": { - "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", - "type": "boolean", - "x-omitempty": false - } - } - } - }, - "version": { - "description": "Cluster profile version", - "type": "string" - } - } - } - } - }, - "v1ClusterProfileFilterSpec": { - "description": "Cluster profile filter spec", - "properties": { - "environment": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "fips": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - }, - "profileName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "profileType": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project" - ] - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "version": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "gt": { - "type": "string", - "x-nullable": true - }, - "lt": { - "type": "string", - "x-nullable": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "v1ClusterProfileFips": { - "description": "Cluster profile fips compliance status", - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "v1ClusterProfileImportEntity": { - "description": "Cluster profile import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster profile import metadata", - "type": "object", - "properties": { - "description": { - "description": "Cluster profile description", - "type": "string" - }, - "labels": { - "description": "Cluster profile labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Cluster profile name", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster profile import spec", - "type": "object", - "properties": { - "template": { - "description": "Cluster profile import template", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack import request payload", - "type": "object", - "properties": { - "layer": { - "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]", - "type": "string" - }, - "manifests": { - "description": "Pack manifests array", - "type": "array", - "items": { - "description": "Pack manifest import objct", - "type": "object", - "properties": { - "content": { - "description": "Pack manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Pack manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registry": { - "description": "Pack registry import entity", - "type": "object", - "properties": { - "matchingRegistries": { - "type": "array", - "items": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "metadata": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - } - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "description": "Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]", - "type": "string" - }, - "values": { - "description": "Pack values are the customizable configurations for the pack", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - } - } - }, - "variables": { - "description": "List of unique variable fields defined for a cluster profile with schema constraints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Unique variable field with schema definition", - "type": "object", - "required": [ - "name" - ], - "properties": { - "defaultValue": { - "description": "The default value of the variable", - "type": "string" - }, - "description": { - "description": "Variable description", - "type": "string" - }, - "displayName": { - "description": "Unique display name of the variable", - "type": "string" - }, - "format": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "hidden": { - "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "immutable": { - "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "isSensitive": { - "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Variable name", - "type": "string" - }, - "regex": { - "description": "Regular expression pattern which the variable value must match", - "type": "string" - }, - "required": { - "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", - "type": "boolean", - "x-omitempty": false - } - } - } - }, - "version": { - "description": "Cluster profile version", - "type": "string" - } - } - } - } - }, - "v1ClusterProfileMetadata": { - "description": "Cluster profile filter spec", - "properties": { - "metadata": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "properties": { - "cloudType": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "v1ClusterProfileMetadataImportEntity": { - "description": "Cluster profile import metadata", - "type": "object", - "properties": { - "description": { - "description": "Cluster profile description", - "type": "string" - }, - "labels": { - "description": "Cluster profile labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Cluster profile name", - "type": "string" - } - } - }, - "v1ClusterProfileNotificationUpdateEntity": { - "description": "Cluster profile notification update request payload", - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - }, - "v1ClusterProfilePackConfigList": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack configuration", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "associatedObject": { - "type": "string" - }, - "isValuesOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "digest": { - "type": "string" - }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "parentUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterProfilePackManifests": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack manifests spec", - "type": "object", - "properties": { - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "Manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - }, - "v1ClusterProfilePackSummary": { - "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count", - "type": "object", - "properties": { - "deleted": { - "description": "Total count of deleted packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "deprecated": { - "description": "Total count of deprecated packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "disabled": { - "description": "Total count of disabled packs in a cluster profile", - "type": "number", - "x-omitempty": false - } - } - }, - "v1ClusterProfilePacksEntities": { - "description": "List of cluster profile packs", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile packs object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - } - } - }, - "v1ClusterProfilePacksEntity": { - "description": "Cluster profile packs object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - }, - "v1ClusterProfilePacksManifests": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack manifests spec", - "type": "object", - "properties": { - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "Manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - } - } - } - } - }, - "v1ClusterProfileScope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project" - ] - }, - "v1ClusterProfileSortFields": { - "type": "string", - "enum": [ - "profileName", - "environment", - "profileType", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1ClusterProfileSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "profileName", - "environment", - "profileType", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1ClusterProfileSpec": { - "description": "ClusterProfileTemplate can be in draft mode, or published mode User only see the latest published template, and (or) the draft template User can apply either the draft version or the latest published version to a cluster when user create a draft version, just copy the Published template, increment the version, and keep changing the draft template without increment the draft version when user publish a draft, the version is fixed, and won't be able to make any modification on published template For each clusterprofile that has a published version, there will be a ClusterProfileArchive automatically created when user publish a draft, the published version will also be copied over to the corresponding ClusterProfileArchive it is just in case in the future for whatever reason we may want to expose earlier versions", - "type": "object", - "properties": { - "draft": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "published": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "version": { - "type": "string" - }, - "versions": { - "description": "Cluster profile's list of all the versions", - "type": "array", - "items": { - "description": "Cluster profile with version", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterProfileSpecEntity": { - "description": "Cluster profile update spec", - "type": "object", - "properties": { - "version": { - "description": "Cluster profile version", - "type": "string" - } - } - }, - "v1ClusterProfileSpecImportEntity": { - "description": "Cluster profile import spec", - "type": "object", - "properties": { - "template": { - "description": "Cluster profile import template", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack import request payload", - "type": "object", - "properties": { - "layer": { - "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]", - "type": "string" - }, - "manifests": { - "description": "Pack manifests array", - "type": "array", - "items": { - "description": "Pack manifest import objct", - "type": "object", - "properties": { - "content": { - "description": "Pack manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Pack manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registry": { - "description": "Pack registry import entity", - "type": "object", - "properties": { - "matchingRegistries": { - "type": "array", - "items": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "metadata": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - } - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "description": "Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]", - "type": "string" - }, - "values": { - "description": "Pack values are the customizable configurations for the pack", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - } - } - }, - "variables": { - "description": "List of unique variable fields defined for a cluster profile with schema constraints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Unique variable field with schema definition", - "type": "object", - "required": [ - "name" - ], - "properties": { - "defaultValue": { - "description": "The default value of the variable", - "type": "string" - }, - "description": { - "description": "Variable description", - "type": "string" - }, - "displayName": { - "description": "Unique display name of the variable", - "type": "string" - }, - "format": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "hidden": { - "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "immutable": { - "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "isSensitive": { - "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Variable name", - "type": "string" - }, - "regex": { - "description": "Regular expression pattern which the variable value must match", - "type": "string" - }, - "required": { - "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", - "type": "boolean", - "x-omitempty": false - } - } - } - }, - "version": { - "description": "Cluster profile version", - "type": "string" - } - } - }, - "v1ClusterProfileStatus": { - "description": "ClusterProfileStatus defines the observed state of ClusterProfile", - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - }, - "inUseClusterUids": { - "description": "Deprecated. Use inUseClusters", - "type": "array", - "items": { - "type": "string" - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "isPublished": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1ClusterProfileStatusSummary": { - "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile", - "type": "object", - "properties": { - "fips": { - "description": "Cluster profile fips compliance status", - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "inUseClusterUids": { - "description": "Deprecated. Use inUseClusters", - "type": "array", - "items": { - "type": "string" - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "isPublished": { - "type": "boolean", - "x-omitempty": false - }, - "pack": { - "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count", - "type": "object", - "properties": { - "deleted": { - "description": "Total count of deleted packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "deprecated": { - "description": "Total count of deprecated packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "disabled": { - "description": "Total count of disabled packs in a cluster profile", - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterProfileSummary": { - "description": "Cluster profile summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Cluster profile spec summary", - "type": "object", - "properties": { - "draft": { - "description": "Cluster profile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - } - }, - "published": { - "description": "Cluster profile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - } - }, - "version": { - "description": "Cluster profile's latest version", - "type": "string" - }, - "versions": { - "description": "Cluster profile's list of all the versions", - "type": "array", - "items": { - "description": "Cluster profile with version", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile", - "type": "object", - "properties": { - "fips": { - "description": "Cluster profile fips compliance status", - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "inUseClusterUids": { - "description": "Deprecated. Use inUseClusters", - "type": "array", - "items": { - "type": "string" - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "isPublished": { - "type": "boolean", - "x-omitempty": false - }, - "pack": { - "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count", - "type": "object", - "properties": { - "deleted": { - "description": "Total count of deleted packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "deprecated": { - "description": "Total count of deprecated packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "disabled": { - "description": "Total count of disabled packs in a cluster profile", - "type": "number", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ClusterProfileTemplate": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "v1ClusterProfileTemplateDraft": { - "description": "Cluster profile template spec", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - } - } - }, - "v1ClusterProfileTemplateImportEntity": { - "description": "Cluster profile import template", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack import request payload", - "type": "object", - "properties": { - "layer": { - "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]", - "type": "string" - }, - "manifests": { - "description": "Pack manifests array", - "type": "array", - "items": { - "description": "Pack manifest import objct", - "type": "object", - "properties": { - "content": { - "description": "Pack manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Pack manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registry": { - "description": "Pack registry import entity", - "type": "object", - "properties": { - "matchingRegistries": { - "type": "array", - "items": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "metadata": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - } - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "description": "Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]", - "type": "string" - }, - "values": { - "description": "Pack values are the customizable configurations for the pack", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - } - } - }, - "v1ClusterProfileTemplateMeta": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ClusterProfileTemplateSummary": { - "description": "Cluster profile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - } - }, - "v1ClusterProfileTemplateUpdate": { - "description": "Cluster profile template update spec", - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - } - } - }, - "v1ClusterProfileUpdateEntity": { - "description": "Cluster profile update request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster profile update spec", - "type": "object", - "properties": { - "template": { - "description": "Cluster profile template update spec", - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - } - } - }, - "version": { - "description": "Cluster profile version", - "type": "string" - } - } - } - } - }, - "v1ClusterProfileValidatorResponse": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterProfileVersion": { - "description": "Cluster profile with version", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ClusterProfiles": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ClusterProfile is the Schema for the clusterprofiles 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "ClusterProfileTemplate can be in draft mode, or published mode User only see the latest published template, and (or) the draft template User can apply either the draft version or the latest published version to a cluster when user create a draft version, just copy the Published template, increment the version, and keep changing the draft template without increment the draft version when user publish a draft, the version is fixed, and won't be able to make any modification on published template For each clusterprofile that has a published version, there will be a ClusterProfileArchive automatically created when user publish a draft, the published version will also be copied over to the corresponding ClusterProfileArchive it is just in case in the future for whatever reason we may want to expose earlier versions", - "type": "object", - "properties": { - "draft": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "published": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - }, - "version": { - "type": "string" - }, - "versions": { - "description": "Cluster profile's list of all the versions", - "type": "array", - "items": { - "description": "Cluster profile with version", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "ClusterProfileStatus defines the observed state of ClusterProfile", - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - }, - "inUseClusterUids": { - "description": "Deprecated. Use inUseClusters", - "type": "array", - "items": { - "type": "string" - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "isPublished": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterProfilesFilterSpec": { - "description": "Spectro cluster filter summary spec", - "properties": { - "filter": { - "description": "Cluster profile filter spec", - "properties": { - "environment": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "fips": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - }, - "profileName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "profileType": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project" - ] - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "version": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "gt": { - "type": "string", - "x-nullable": true - }, - "lt": { - "type": "string", - "x-nullable": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "profileName", - "environment", - "profileType", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1ClusterProfilesMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile filter spec", - "properties": { - "metadata": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "properties": { - "cloudType": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterProfilesSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Cluster profile spec summary", - "type": "object", - "properties": { - "draft": { - "description": "Cluster profile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - } - }, - "published": { - "description": "Cluster profile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - } - }, - "version": { - "description": "Cluster profile's latest version", - "type": "string" - }, - "versions": { - "description": "Cluster profile's list of all the versions", - "type": "array", - "items": { - "description": "Cluster profile with version", - "properties": { - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile", - "type": "object", - "properties": { - "fips": { - "description": "Cluster profile fips compliance status", - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "inUseClusterUids": { - "description": "Deprecated. Use inUseClusters", - "type": "array", - "items": { - "type": "string" - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "isPublished": { - "type": "boolean", - "x-omitempty": false - }, - "pack": { - "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count", - "type": "object", - "properties": { - "deleted": { - "description": "Total count of deleted packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "deprecated": { - "description": "Total count of deprecated packs in a cluster profile", - "type": "number", - "x-omitempty": false - }, - "disabled": { - "description": "Total count of disabled packs in a cluster profile", - "type": "number", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterProxySpec": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - }, - "v1ClusterRbac": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterRbacBinding": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - }, - "v1ClusterRbacEntity": { - "properties": { - "clusterRbac": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterRbacInputEntity": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - }, - "v1ClusterRbacResourcesUpdateEntity": { - "type": "object", - "properties": { - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1ClusterRbacSpec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1ClusterRbacStatus": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterRbacSubjects": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - }, - "v1ClusterRbacs": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1ClusterRefs": { - "description": "Cluster Object References", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - }, - "v1ClusterRepaveSource": { - "type": "string", - "enum": [ - "user", - "hubble", - "palette", - "stylus" - ] - }, - "v1ClusterRepaveState": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - }, - "v1ClusterRepaveStatus": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "v1ClusterResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - }, - "v1ClusterResourceError": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - }, - "v1ClusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterResourcesEntity": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1ClusterRestore": { - "description": "Cluster Restore", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster Restore Spec", - "properties": { - "clusterUid": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster Restore Status", - "properties": { - "clusterRestoreStatuses": { - "type": "array", - "items": { - "description": "Cluster Restore Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupName": { - "type": "string" - }, - "backupRequestUid": { - "type": "string" - }, - "restoreRequestUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Restore status meta", - "properties": { - "isSucceeded": { - "type": "boolean" - }, - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "sourceClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterRestoreConfig": { - "description": "Cluster restore config", - "required": [ - "backupRequestUid", - "backupName", - "destinationClusterUid" - ], - "properties": { - "backupName": { - "type": "string" - }, - "backupRequestUid": { - "type": "string" - }, - "destinationClusterUid": { - "type": "string" - }, - "includeClusterResources": { - "type": "boolean" - }, - "includeNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "preserveNodePorts": { - "type": "boolean" - }, - "restorePVs": { - "type": "boolean" - } - } - }, - "v1ClusterRestoreSpec": { - "description": "Cluster Restore Spec", - "properties": { - "clusterUid": { - "type": "string" - } - } - }, - "v1ClusterRestoreStatus": { - "description": "Cluster Restore Status", - "properties": { - "clusterRestoreStatuses": { - "type": "array", - "items": { - "description": "Cluster Restore Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupName": { - "type": "string" - }, - "backupRequestUid": { - "type": "string" - }, - "restoreRequestUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Restore status meta", - "properties": { - "isSucceeded": { - "type": "boolean" - }, - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "sourceClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterRestoreStatusMeta": { - "description": "Cluster Restore Status Meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "backupName": { - "type": "string" - }, - "backupRequestUid": { - "type": "string" - }, - "restoreRequestUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Restore status meta", - "properties": { - "isSucceeded": { - "type": "boolean" - }, - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "sourceClusterRef": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterRoleRef": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "v1ClusterScanLogKubeBench": { - "description": "Cluster compliance scan KubeBench Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeBench Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1ClusterScanLogKubeHunter": { - "description": "Cluster compliance scan KubeHunter Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan KubeHunter Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilites": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1ClusterScanLogSonobuoy": { - "description": "Cluster compliance scan Sonobuoy Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Sonobuoy Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1ClusterScanLogSyft": { - "description": "Cluster Compliance Scan Syft Log", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster compliance scan logs spec", - "properties": { - "clusterUid": { - "type": "string" - }, - "driverType": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster compliance scan Syft Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Report", - "properties": { - "dependencies": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanContext": { - "description": "Compliance Scan Syft Context", - "properties": { - "format": { - "type": "string" - }, - "labelSelector": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1ClusterScanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1ClusterSearchInputSpec": { - "properties": { - "inputs": { - "type": "object", - "additionalProperties": { - "properties": { - "values": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "x-omitempty": true - } - } - } - } - } - }, - "v1ClusterSearchInputSpecProperty": { - "properties": { - "values": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "x-omitempty": true - } - } - }, - "v1ClusterSonobuoyLogStatus": { - "description": "Cluster compliance scan Sonobuoy Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "object", - "additionalProperties": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "v1ClusterSyftLogStatus": { - "description": "Cluster compliance scan Syft Log Status", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "location": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "message": { - "type": "string" - }, - "reports": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Report", - "properties": { - "dependencies": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "scanContext": { - "description": "Compliance Scan Syft Context", - "properties": { - "format": { - "type": "string" - }, - "labelSelector": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "scanTime": { - "description": "Cluster compliance scan Time", - "properties": { - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterType": { - "type": "string", - "default": "PureManage", - "enum": [ - "PureManage", - "PureAttach" - ] - }, - "v1ClusterUpgradeSettingsEntity": { - "properties": { - "spectroComponents": { - "type": "string", - "enum": [ - "lock", - "unlock" - ] - } - } - }, - "v1ClusterUsageSummary": { - "description": "Cluster usage summary", - "type": "object", - "properties": { - "cpuCores": { - "type": "number", - "x-omitempty": false - }, - "isAlloy": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ClusterVirtualMachine": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - }, - "v1ClusterVirtualMachineList": { - "description": "VirtualMachineList is a list of virtual machines", - "type": "object", - "required": [ - "items" - ], - "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.", - "type": "string" - }, - "items": { - "type": "array", - "items": { - "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "status": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - } - } - } - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests 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": { - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "type": "object", - "properties": { - "continue": { - "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", - "type": "string" - }, - "remainingItemCount": { - "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", - "type": "integer", - "format": "int64" - }, - "resourceVersion": { - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", - "type": "string" - }, - "selfLink": { - "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - } - } - } - } - }, - "v1ClusterVirtualMachineSpec": { - "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", - "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": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "v1ClusterVirtualMachineStatus": { - "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", - "type": "object", - "properties": { - "conditions": { - "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", - "type": "array", - "items": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "created": { - "description": "Created indicates if the virtual machine is created in the cluster", - "type": "boolean" - }, - "memoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "printableStatus": { - "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" - }, - "ready": { - "description": "Ready indicates if the virtual machine is running and ready", - "type": "boolean" - }, - "restoreInProgress": { - "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", - "type": "string" - }, - "snapshotInProgress": { - "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", - "type": "string" - }, - "startFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "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.", - "type": "array", - "items": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - } - }, - "volumeRequests": { - "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumeSnapshotStatuses": { - "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - } - } - }, - "x-nullable": true - }, - "v1ClusterVirtualPacksValue": { - "description": "Virtual cluster packs value", - "type": "object", - "properties": { - "distroType": { - "type": "string" - }, - "layer": { - "type": "string" - }, - "values": { - "type": "string" - } - } - }, - "v1ClusterVirtualPacksValues": { - "description": "Virtual cluster packs values", - "type": "object", - "properties": { - "packs": { - "type": "array", - "items": { - "description": "Virtual cluster packs value", - "type": "object", - "properties": { - "distroType": { - "type": "string" - }, - "layer": { - "type": "string" - }, - "values": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterWorkload": { - "description": "Cluster workload summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload spec", - "type": "object", - "properties": { - "clusterroleBindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - }, - "cronJobs": { - "type": "array", - "items": { - "description": "Cluster workload cronjob summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "daemonSets": { - "type": "array", - "items": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "deployments": { - "type": "array", - "items": { - "description": "Cluster workload deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "jobs": { - "type": "array", - "items": { - "description": "Cluster workload job summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "pods": { - "type": "array", - "items": { - "description": "Cluster workload pod summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - } - } - } - }, - "roleBindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - }, - "statefulSets": { - "type": "array", - "items": { - "description": "Cluster workload statefulset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadCondition": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1ClusterWorkloadCronJob": { - "description": "Cluster workload cronjob summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1ClusterWorkloadCronJobSpec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "v1ClusterWorkloadCronJobStatus": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1ClusterWorkloadCronJobs": { - "description": "Cluster workload cronjobs summary", - "type": "object", - "properties": { - "cronJobs": { - "type": "array", - "items": { - "description": "Cluster workload cronjob summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadDaemonSet": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1ClusterWorkloadDaemonSetStatus": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ClusterWorkloadDaemonSets": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "daemonSets": { - "type": "array", - "items": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadDeployment": { - "description": "Cluster workload deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ClusterWorkloadDeploymentStatus": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterWorkloadDeployments": { - "description": "Cluster workload deployments summary", - "type": "object", - "properties": { - "deployments": { - "type": "array", - "items": { - "description": "Cluster workload deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadJob": { - "description": "Cluster workload job summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1ClusterWorkloadJobStatus": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ClusterWorkloadJobs": { - "description": "Cluster workload jobs summary", - "type": "object", - "properties": { - "jobs": { - "type": "array", - "items": { - "description": "Cluster workload job summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadMetadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "v1ClusterWorkloadNamespace": { - "description": "Cluster workload namespace summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload namespace status", - "type": "object", - "properties": { - "phase": { - "type": "string" - } - } - } - } - }, - "v1ClusterWorkloadNamespaceStatus": { - "description": "Cluster workload namespace status", - "type": "object", - "properties": { - "phase": { - "type": "string" - } - } - }, - "v1ClusterWorkloadNamespaces": { - "description": "Cluster workload namespaces summary", - "properties": { - "namespaces": { - "type": "array", - "items": { - "description": "Cluster workload namespace summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload namespace status", - "type": "object", - "properties": { - "phase": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadPod": { - "description": "Cluster workload pod summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - } - } - }, - "v1ClusterWorkloadPodContainer": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - }, - "v1ClusterWorkloadPodContainerResource": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "v1ClusterWorkloadPodContainerResources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - }, - "v1ClusterWorkloadPodContainerState": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "v1ClusterWorkloadPodContainerStatus": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1ClusterWorkloadPodMetadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "v1ClusterWorkloadPodSpec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "v1ClusterWorkloadPodStatus": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - }, - "v1ClusterWorkloadPodVolume": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - }, - "v1ClusterWorkloadPods": { - "description": "Cluster workload pods summary", - "properties": { - "pods": { - "type": "array", - "items": { - "description": "Cluster workload pod summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadRef": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ClusterWorkloadReplicaStatus": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - }, - "v1ClusterWorkloadRoleBinding": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - }, - "v1ClusterWorkloadRoleBindings": { - "description": "Cluster workload rbac bindings summary", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadSpec": { - "description": "Cluster workload spec", - "type": "object", - "properties": { - "clusterroleBindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - }, - "cronJobs": { - "type": "array", - "items": { - "description": "Cluster workload cronjob summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "daemonSets": { - "type": "array", - "items": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "deployments": { - "type": "array", - "items": { - "description": "Cluster workload deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "jobs": { - "type": "array", - "items": { - "description": "Cluster workload job summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "pods": { - "type": "array", - "items": { - "description": "Cluster workload pod summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - } - } - } - }, - "roleBindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - }, - "statefulSets": { - "type": "array", - "items": { - "description": "Cluster workload statefulset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadStatefulSet": { - "description": "Cluster workload statefulset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ClusterWorkloadStatefulSetStatus": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - }, - "v1ClusterWorkloadStatefulSets": { - "description": "Cluster workload statefulsets summary", - "type": "object", - "properties": { - "statefulSets": { - "type": "array", - "items": { - "description": "Cluster workload statefulset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - }, - "v1ClusterWorkloadsFilter": { - "description": "Cluster workloads filter", - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1ClusterWorkloadsSpec": { - "description": "Cluster workloads spec", - "type": "object", - "properties": { - "filter": { - "description": "Cluster workloads filter", - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - }, - "v1ClustersInfo": { - "description": "Active clusters information", - "type": "object", - "properties": { - "clustersMeta": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Active cluster meta", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "clusterType": { - "type": "string" - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectName": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "totalActiveClusters": { - "type": "number", - "format": "int64" - }, - "totalActiveGreenFieldClusters": { - "type": "number", - "format": "int64" - }, - "totalActiveImportedClusters": { - "type": "number", - "format": "int64" - }, - "totalClustersDeleted": { - "type": "number", - "format": "int64" - }, - "totalClustersDeployed": { - "type": "number", - "format": "int64" - } - } - }, - "v1ComplianceScanConfig": { - "description": "Compliance Scan config", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "v1ComplianceScanDriverSpec": { - "description": "Compliance Scan driver spec", - "properties": { - "config": { - "description": "Compliance Scan config", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "isClusterConfig": { - "type": "boolean" - } - } - }, - "v1ComputeMetrics": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1ComputeRate": { - "description": "Compute estimated rate information", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "type": { - "type": "string" - } - } - }, - "v1ConfigReverseProxy": { - "description": "Describes the reverse proxy configuration", - "properties": { - "caCert": { - "description": "Describes the ca certificate for system's reverse proxy", - "type": "string" - }, - "clientCert": { - "description": "Describes the client certificate for system's reverse proxy", - "type": "string" - }, - "clientKey": { - "description": "Describes the client certificate key for system's reverse proxy", - "type": "string" - }, - "port": { - "description": "Describes the system's reverse proxy server port", - "type": "integer" - }, - "protocol": { - "description": "Describes the system's reverse proxy server protocol. Possible values [https, http]", - "type": "string", - "enum": [ - "http", - "https" - ] - }, - "server": { - "description": "Describes the system's reverse proxy server", - "type": "string" - } - } - }, - "v1ConstraintError": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - }, - "v1ConstraintValidatorResponse": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "v1ConstraintValidatorResult": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - }, - "v1ControlPlaneEndPoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "v1ControlPlaneHealthCheckTimeoutEntity": { - "type": "object", - "properties": { - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes", - "type": "string" - } - } - }, - "v1CustomAccount": { - "description": "Custom account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1CustomAccountEntity": { - "description": "Custom account information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "v1CustomAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Custom account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1CustomCloudAccount": { - "type": "object", - "required": [ - "credentials" - ], - "properties": { - "credentials": { - "description": "Cloud account credentials", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1CustomCloudClusterConfigEntity": { - "description": "Custom cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - } - } - }, - "v1CustomCloudConfig": { - "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API", - "type": "object", - "properties": { - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - }, - "values": { - "description": "YAML string for machine", - "type": "string" - } - } - } - } - } - } - } - }, - "v1CustomCloudConfigSpec": { - "description": "CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - }, - "values": { - "description": "YAML string for machine", - "type": "string" - } - } - } - } - } - }, - "v1CustomCloudMetaEntity": { - "description": "Custom cloud meta entity", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Custom cloud spec response entity", - "type": "object", - "properties": { - "cloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "displayName": { - "description": "Custom cloud displayName", - "type": "string" - }, - "isManaged": { - "description": "If the custom cloud is a managed cluster", - "type": "boolean" - }, - "logo": { - "description": "Custom cloud logo", - "type": "string" - } - } - } - } - }, - "v1CustomCloudMetaSpecEntity": { - "description": "Custom cloud spec response entity", - "type": "object", - "properties": { - "cloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "displayName": { - "description": "Custom cloud displayName", - "type": "string" - }, - "isManaged": { - "description": "If the custom cloud is a managed cluster", - "type": "boolean" - }, - "logo": { - "description": "Custom cloud logo", - "type": "string" - } - } - }, - "v1CustomCloudRateConfig": { - "description": "Private cloud rate config", - "properties": { - "cloudType": { - "type": "string" - }, - "rateConfig": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - }, - "v1CustomCloudRequestEntity": { - "description": "Custom cloud request entity", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Custom cloud request entity spec", - "type": "object", - "properties": { - "cloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "displayName": { - "description": "Custom cloud displayName", - "type": "string" - }, - "isControlPlaneManaged": { - "description": "If the custom cloud is a managed cluster", - "type": "boolean" - }, - "logo": { - "description": "Custom cloud logo", - "type": "string" - } - } - } - } - }, - "v1CustomCloudSpecEntity": { - "description": "Custom cloud request entity spec", - "type": "object", - "properties": { - "cloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "displayName": { - "description": "Custom cloud displayName", - "type": "string" - }, - "isControlPlaneManaged": { - "description": "If the custom cloud is a managed cluster", - "type": "boolean" - }, - "logo": { - "description": "Custom cloud logo", - "type": "string" - } - } - }, - "v1CustomCloudType": { - "type": "object", - "properties": { - "cloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "cloudFamily": { - "description": "Cloud grouping as family", - "type": "string" - }, - "displayName": { - "description": "Custom cloudtype displayName", - "type": "string" - }, - "isCustom": { - "description": "If it is a custom cloudtype", - "type": "boolean", - "x-omitempty": false - }, - "isManaged": { - "description": "If custom cloudtype is managed", - "type": "boolean", - "x-omitempty": false - }, - "isVertex": { - "description": "If cloud is support for Vertex env", - "type": "boolean", - "x-omitempty": false - }, - "logo": { - "description": "Custom cloudtype logo", - "type": "string" - }, - "name": { - "description": "Custom cloudtype name", - "type": "string" - } - } - }, - "v1CustomCloudTypeCloudAccountKeys": { - "description": "Custom cloudType custom cloud account keys", - "type": "object", - "properties": { - "keys": { - "description": "Array of custom cloud type cloud account keys", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1CustomCloudTypeContentResponse": { - "description": "Custom cloudType content response", - "type": "object", - "properties": { - "yaml": { - "description": "custom cloud type content", - "type": "string" - } - } - }, - "v1CustomCloudTypes": { - "description": "Custom cloudType content response", - "type": "object", - "properties": { - "cloudTypes": { - "description": "Array of custom cloud types", - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudCategory": { - "description": "Cloud category description", - "type": "string", - "default": "cloud", - "enum": [ - "datacenter", - "cloud", - "edge" - ] - }, - "cloudFamily": { - "description": "Cloud grouping as family", - "type": "string" - }, - "displayName": { - "description": "Custom cloudtype displayName", - "type": "string" - }, - "isCustom": { - "description": "If it is a custom cloudtype", - "type": "boolean", - "x-omitempty": false - }, - "isManaged": { - "description": "If custom cloudtype is managed", - "type": "boolean", - "x-omitempty": false - }, - "isVertex": { - "description": "If cloud is support for Vertex env", - "type": "boolean", - "x-omitempty": false - }, - "logo": { - "description": "Custom cloudtype logo", - "type": "string" - }, - "name": { - "description": "Custom cloudtype name", - "type": "string" - } - } - } - } - } - }, - "v1CustomClusterConfig": { - "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - }, - "v1CustomClusterConfigEntity": { - "type": "object", - "properties": { - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "v1CustomInstanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a custom machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a custom machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number in a custom machine", - "type": "integer", - "format": "int32" - } - } - }, - "v1CustomMachine": { - "description": "Custom cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Custom cloud VM definition spec", - "properties": { - "cloudType": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a custom machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a custom machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number in a custom machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Custom network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1CustomMachinePoolBaseConfigEntity": { - "description": "Machine pool configuration for the custom cluster", - "type": "object", - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1CustomMachinePoolCloudConfigEntity": { - "type": "object", - "properties": { - "values": { - "description": "Machine pool configuration as yaml content", - "type": "string" - } - } - }, - "v1CustomMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - }, - "values": { - "description": "YAML string for machine", - "type": "string" - } - } - }, - "v1CustomMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "values": { - "description": "Machine pool configuration as yaml content", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the custom cluster", - "type": "object", - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1CustomMachineSpec": { - "description": "Custom cloud VM definition spec", - "properties": { - "cloudType": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a custom machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a custom machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number in a custom machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Custom network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "v1CustomMachines": { - "description": "List of Custom machines", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Custom cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Custom cloud VM definition spec", - "properties": { - "cloudType": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a custom machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a custom machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number in a custom machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Custom network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1CustomNic": { - "description": "Custom network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1DashboardWorkspace": { - "description": "Workspace information", - "properties": { - "meta": { - "description": "Deprecated. Workspace meta data", - "properties": { - "clusterNames": { - "description": "Deprecated. Use clusterRefs", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace spec summary", - "properties": { - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace quota resource allocation", - "properties": { - "cpu": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memory": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - }, - "status": { - "description": "Workspace status", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace namespace allocation", - "properties": { - "name": { - "type": "string" - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - } - }, - "v1DashboardWorkspaceAllocation": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1DashboardWorkspaceClusterRef": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1DashboardWorkspaceMeta": { - "description": "Deprecated. Workspace meta data", - "properties": { - "clusterNames": { - "description": "Deprecated. Use clusterRefs", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - }, - "v1DashboardWorkspaceNamespaceAllocation": { - "description": "Workspace namespace allocation", - "properties": { - "name": { - "type": "string" - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1DashboardWorkspaceQuota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace quota resource allocation", - "properties": { - "cpu": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memory": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - }, - "v1DashboardWorkspaceQuotaResourceAllocation": { - "description": "Workspace quota resource allocation", - "properties": { - "cpu": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memory": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - }, - "v1DashboardWorkspaceResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1DashboardWorkspaceSpec": { - "description": "Workspace spec summary", - "properties": { - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace quota resource allocation", - "properties": { - "cpu": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memory": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - }, - "v1DashboardWorkspaceStatus": { - "description": "Workspace status", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace namespace allocation", - "properties": { - "name": { - "type": "string" - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1DashboardWorkspaces": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "cpuUnit": { - "type": "string" - }, - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace information", - "properties": { - "meta": { - "description": "Deprecated. Workspace meta data", - "properties": { - "clusterNames": { - "description": "Deprecated. Use clusterRefs", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace spec summary", - "properties": { - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace quota resource allocation", - "properties": { - "cpu": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memory": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - }, - "status": { - "description": "Workspace status", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace namespace allocation", - "properties": { - "name": { - "type": "string" - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "total": { - "description": "Workspace allocation", - "properties": { - "cpu": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Workspace resource allocation", - "properties": { - "allocated": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - }, - "memoryUnit": { - "type": "string" - } - } - }, - "v1DataSinkConfig": { - "description": "Data sink", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "auditDataSinks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "cloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "cloudwatch" - ] - } - } - } - } - } - } - } - }, - "v1DataSinkSpec": { - "type": "object", - "properties": { - "auditDataSinks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "cloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "cloudwatch" - ] - } - } - } - } - } - }, - "v1DataSinkableSpec": { - "type": "object", - "properties": { - "cloudWatch": { - "type": "object", - "properties": { - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "group": { - "type": "string" - }, - "region": { - "type": "string" - }, - "stream": { - "type": "string" - } - } - }, - "type": { - "type": "string", - "enum": [ - "cloudwatch" - ] - } - } - }, - "v1DatabaseTransferJob": { - "description": "database transfer job details", - "type": "object", - "properties": { - "backupStatus": { - "description": "transfer job details", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folder": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - }, - "status": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "FileSystem", - "Ftp" - ] - } - } - }, - "v1DatabaseTransferStatus": { - "description": "database transfer status", - "type": "object", - "properties": { - "backups": { - "type": "array", - "items": { - "description": "database transfer job details", - "type": "object", - "properties": { - "backupStatus": { - "description": "transfer job details", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folder": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - }, - "status": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "FileSystem", - "Ftp" - ] - } - } - } - }, - "isActive": { - "type": "boolean" - } - } - }, - "v1DeleteMeta": { - "description": "Properties to send back after deletion operation", - "properties": { - "count": { - "type": "integer", - "format": "int64" - }, - "items": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1DeletedMsg": { - "description": "Deleted response with message", - "properties": { - "msg": { - "type": "string" - } - } - }, - "v1DeveloperCredit": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - }, - "v1DeviceSpec": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "v1Disk": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - }, - "v1DomainHost": { - "description": "update domain host for application. RootDomain gets dervied from domain host url", - "type": "object", - "properties": { - "host": { - "type": "string" - } - } - }, - "v1EcrAuthorizationRequestEntity": { - "description": "Ecr registry credentials entity", - "type": "object", - "properties": { - "awsCloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "endpoint": { - "description": "Endpoint url to make the request", - "type": "string" - }, - "isPrivate": { - "description": "If it is public or private", - "type": "boolean" - }, - "region": { - "description": "Name of the region", - "type": "string" - } - } - }, - "v1EcrImageEntity": { - "type": "object", - "properties": { - "name": { - "description": "Image name", - "type": "string" - }, - "tag": { - "description": "Image tag", - "type": "string" - } - } - }, - "v1EcrImageValidateEntity": { - "description": "Ecr registry image meta", - "type": "object", - "properties": { - "authEntity": { - "description": "Ecr registry credentials entity", - "type": "object", - "properties": { - "awsCloudAccount": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "endpoint": { - "description": "Endpoint url to make the request", - "type": "string" - }, - "isPrivate": { - "description": "If it is public or private", - "type": "boolean" - }, - "region": { - "description": "Name of the region", - "type": "string" - } - } - }, - "imageTag": { - "description": "Name of the image tag", - "type": "string" - }, - "images": { - "description": "Ecr Image Entity", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Image name", - "type": "string" - }, - "tag": { - "description": "Image tag", - "type": "string" - } - } - } - }, - "repoName": { - "description": "Name of the repo", - "type": "string" - } - } - }, - "v1EcrRegistry": { - "description": "Ecr registry information", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Ecr registry spec", - "type": "object", - "required": [ - "endpoint", - "isPrivate" - ], - "properties": { - "baseContentPath": { - "description": "OCI ecr registry content base path", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "defaultRegion": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "providerType": { - "type": "string", - "default": "helm", - "enum": [ - "helm", - "pack" - ] - }, - "registryUid": { - "description": "Ecr registry uid", - "type": "string" - }, - "scope": { - "type": "string" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - } - } - } - } - }, - "v1EcrRegistrySpec": { - "description": "Ecr registry spec", - "type": "object", - "required": [ - "endpoint", - "isPrivate" - ], - "properties": { - "baseContentPath": { - "description": "OCI ecr registry content base path", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "defaultRegion": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "providerType": { - "type": "string", - "default": "helm", - "enum": [ - "helm", - "pack" - ] - }, - "registryUid": { - "description": "Ecr registry uid", - "type": "string" - }, - "scope": { - "type": "string" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - } - } - }, - "v1EdgeHost": { - "description": "EdgeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "disableAutoRegister": { - "description": "Set to true if auto register is disabled for the device", - "type": "boolean", - "x-omitempty": false - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "hostAuthToken": { - "description": "HostAuthToken to authorize auto registration", - "type": "string", - "x-omitempty": false - }, - "hostChecksum": { - "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", - "type": "string", - "x-omitempty": false - }, - "hostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostPairingKey": { - "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS", - "type": "string", - "format": "password", - "x-omitempty": false - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string" - }, - "macAddress": { - "description": "Mac address of edgehost", - "type": "string", - "x-omitempty": false - }, - "project": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1EdgeHostCloudProperties": { - "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", - "type": "object", - "properties": { - "vsphere": { - "description": "Vsphere cloud properties of edge host", - "properties": { - "datacenters": { - "type": "array", - "items": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1EdgeHostClusterEntity": { - "type": "object", - "properties": { - "clusterUid": { - "type": "string" - } - } - }, - "v1EdgeHostDevice": { - "properties": { - "aclmeta": { - "description": "Resource access control information (Read-only response data)", - "type": "object", - "properties": { - "ownerUid": { - "description": "User or service uid which created the resource", - "type": "string" - }, - "projectUid": { - "description": "Project's uid if the resource is under a project", - "type": "string" - }, - "tenantUid": { - "description": "Tenant's uid", - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice", - "type": "object", - "properties": { - "cloudProperties": { - "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", - "type": "object", - "properties": { - "vsphere": { - "description": "Vsphere cloud properties of edge host", - "properties": { - "datacenters": { - "type": "array", - "items": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "EdgeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "disableAutoRegister": { - "description": "Set to true if auto register is disabled for the device", - "type": "boolean", - "x-omitempty": false - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "hostAuthToken": { - "description": "HostAuthToken to authorize auto registration", - "type": "string", - "x-omitempty": false - }, - "hostChecksum": { - "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", - "type": "string", - "x-omitempty": false - }, - "hostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostPairingKey": { - "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS", - "type": "string", - "format": "password", - "x-omitempty": false - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string" - }, - "macAddress": { - "description": "Mac address of edgehost", - "type": "string", - "x-omitempty": false - }, - "project": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "properties": { - "description": "Additional properties of edge host", - "properties": { - "networks": { - "type": "array", - "items": { - "description": "Network defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "storagePools": { - "type": "array", - "items": { - "description": "StoragePool is the storage pool for the vm image", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "service": { - "description": "ServiceSpec defines the specification of service registering edge", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "type": { - "description": "Deprecated. Cloudtype of the provisioned edge host", - "type": "string", - "enum": [ - "libvirt", - "vsphere", - "edge-native" - ] - }, - "version": { - "type": "string" - } - } - }, - "status": { - "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice", - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "serviceAuthToken": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - } - }, - "v1EdgeHostDeviceEntity": { - "description": "Edge host device information", - "type": "object", - "properties": { - "metadata": { - "description": "Object identity meta with tags", - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Edge host device spec", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - }, - "hostPairingKey": { - "type": "string", - "format": "password" - } - } - } - } - }, - "v1EdgeHostDeviceHostCheckSum": { - "type": "object", - "properties": { - "hostCheckSum": { - "type": "string" - } - } - }, - "v1EdgeHostDeviceHostPairingKey": { - "type": "object", - "properties": { - "hostPairingKey": { - "type": "string", - "format": "password" - } - } - }, - "v1EdgeHostDeviceMetaUpdateEntity": { - "description": "Edge host device uid and name", - "type": "object", - "properties": { - "metadata": { - "description": "Object identity meta with tags", - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1EdgeHostDeviceSpec": { - "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice", - "type": "object", - "properties": { - "cloudProperties": { - "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", - "type": "object", - "properties": { - "vsphere": { - "description": "Vsphere cloud properties of edge host", - "properties": { - "datacenters": { - "type": "array", - "items": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "EdgeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "disableAutoRegister": { - "description": "Set to true if auto register is disabled for the device", - "type": "boolean", - "x-omitempty": false - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "hostAuthToken": { - "description": "HostAuthToken to authorize auto registration", - "type": "string", - "x-omitempty": false - }, - "hostChecksum": { - "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", - "type": "string", - "x-omitempty": false - }, - "hostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostPairingKey": { - "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS", - "type": "string", - "format": "password", - "x-omitempty": false - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string" - }, - "macAddress": { - "description": "Mac address of edgehost", - "type": "string", - "x-omitempty": false - }, - "project": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "properties": { - "description": "Additional properties of edge host", - "properties": { - "networks": { - "type": "array", - "items": { - "description": "Network defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "storagePools": { - "type": "array", - "items": { - "description": "StoragePool is the storage pool for the vm image", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "service": { - "description": "ServiceSpec defines the specification of service registering edge", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "type": { - "description": "Deprecated. Cloudtype of the provisioned edge host", - "type": "string", - "enum": [ - "libvirt", - "vsphere", - "edge-native" - ] - }, - "version": { - "type": "string" - } - } - }, - "v1EdgeHostDeviceSpecEntity": { - "description": "Edge host device spec", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - }, - "hostPairingKey": { - "type": "string", - "format": "password" - } - } - }, - "v1EdgeHostDeviceStatus": { - "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice", - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "serviceAuthToken": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - }, - "v1EdgeHostDevices": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "aclmeta": { - "description": "Resource access control information (Read-only response data)", - "type": "object", - "properties": { - "ownerUid": { - "description": "User or service uid which created the resource", - "type": "string" - }, - "projectUid": { - "description": "Project's uid if the resource is under a project", - "type": "string" - }, - "tenantUid": { - "description": "Tenant's uid", - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice", - "type": "object", - "properties": { - "cloudProperties": { - "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", - "type": "object", - "properties": { - "vsphere": { - "description": "Vsphere cloud properties of edge host", - "properties": { - "datacenters": { - "type": "array", - "items": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "EdgeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "disableAutoRegister": { - "description": "Set to true if auto register is disabled for the device", - "type": "boolean", - "x-omitempty": false - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "hostAuthToken": { - "description": "HostAuthToken to authorize auto registration", - "type": "string", - "x-omitempty": false - }, - "hostChecksum": { - "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", - "type": "string", - "x-omitempty": false - }, - "hostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostPairingKey": { - "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS", - "type": "string", - "format": "password", - "x-omitempty": false - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string" - }, - "macAddress": { - "description": "Mac address of edgehost", - "type": "string", - "x-omitempty": false - }, - "project": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "properties": { - "description": "Additional properties of edge host", - "properties": { - "networks": { - "type": "array", - "items": { - "description": "Network defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "storagePools": { - "type": "array", - "items": { - "description": "StoragePool is the storage pool for the vm image", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "service": { - "description": "ServiceSpec defines the specification of service registering edge", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "type": { - "description": "Deprecated. Cloudtype of the provisioned edge host", - "type": "string", - "enum": [ - "libvirt", - "vsphere", - "edge-native" - ] - }, - "version": { - "type": "string" - } - } - }, - "status": { - "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice", - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "serviceAuthToken": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1EdgeHostHealth": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "v1EdgeHostIdentity": { - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "v1EdgeHostMeta": { - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - }, - "edgeHostType": { - "type": "string", - "enum": [ - "libvirt", - "edge-native", - "vsphere" - ] - }, - "healthState": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1EdgeHostNetwork": { - "description": "Network defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - }, - "v1EdgeHostProperties": { - "description": "Additional properties of edge host", - "properties": { - "networks": { - "type": "array", - "items": { - "description": "Network defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "storagePools": { - "type": "array", - "items": { - "description": "StoragePool is the storage pool for the vm image", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "v1EdgeHostSSHSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - }, - "v1EdgeHostSpecHost": { - "description": "Host specifications", - "properties": { - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "macAddress": { - "type": "string" - } - } - }, - "v1EdgeHostState": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - }, - "v1EdgeHostStoragePool": { - "description": "StoragePool is the storage pool for the vm image", - "properties": { - "name": { - "type": "string" - } - } - }, - "v1EdgeHostVsphereCloudProperties": { - "description": "Vsphere cloud properties of edge host", - "properties": { - "datacenters": { - "type": "array", - "items": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "v1EdgeHostsMeta": { - "type": "object", - "properties": { - "edgeHosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - }, - "edgeHostType": { - "type": "string", - "enum": [ - "libvirt", - "edge-native", - "vsphere" - ] - }, - "healthState": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1EdgeHostsMetadata": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Edge host clusterprofile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "Host specifications", - "properties": { - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "macAddress": { - "type": "string" - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - }, - "status": { - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - } - }, - "v1EdgeHostsMetadataFilter": { - "description": "Edge host metadata spec", - "properties": { - "filter": { - "description": "Edge hosts metadata filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "states": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "state", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1EdgeHostsMetadataFilterSpec": { - "description": "Edge hosts metadata filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "states": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - }, - "v1EdgeHostsMetadataSortFields": { - "type": "string", - "enum": [ - "name", - "state", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1EdgeHostsMetadataSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "state", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1EdgeHostsMetadataSpec": { - "type": "object", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Edge host clusterprofile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "Host specifications", - "properties": { - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "macAddress": { - "type": "string" - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - }, - "v1EdgeHostsMetadataStatus": { - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - }, - "v1EdgeHostsMetadataSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Edge host clusterprofile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "Host specifications", - "properties": { - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "macAddress": { - "type": "string" - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - }, - "status": { - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - } - } - } - } - }, - "v1EdgeHostsSearchSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Edge host clusterprofile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "device": { - "description": "DeviceSpec defines the desired state of Device", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the edge host", - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - }, - "cpu": { - "type": "object", - "properties": { - "cores": { - "description": "number of cpu cores", - "type": "integer", - "format": "int32" - } - } - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "controller": { - "type": "string" - }, - "partitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - } - }, - "size": { - "description": "Size in GB", - "type": "integer", - "format": "int32" - }, - "vendor": { - "type": "string" - } - } - } - }, - "gpus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "nics": { - "type": "array", - "items": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - } - }, - "os": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "host": { - "description": "Host specifications", - "properties": { - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string" - }, - "macAddress": { - "type": "string" - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - }, - "status": { - "type": "object", - "properties": { - "health": { - "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", - "properties": { - "agentVersion": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "healthy", - "unhealthy" - ] - } - } - }, - "inUseClusters": { - "type": "array", - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "enum": [ - "ready", - "unpaired", - "in-use" - ] - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1EdgeHostsTags": { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1EdgeNativeCloudClusterConfigEntity": { - "description": "EdgeNative cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "overlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - } - } - }, - "v1EdgeNativeCloudConfig": { - "description": "EdgeNativeCloudConfig is the Schema for the edgenativecloudconfigs API", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig", - "type": "object", - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "properties": { - "clusterConfig": { - "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "overlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "hosts" - ], - "properties": { - "additionalLabels": { - "description": "AdditionalLabels", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "hosts": { - "type": "array", - "items": { - "description": "EdgeNativeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "IsCandidateCaption": { - "description": "Is Edge host nominated as candidate", - "type": "boolean", - "default": false, - "x-omitempty": false - }, - "caCert": { - "description": "CACert for TLS connections", - "type": "string" - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string", - "default": "" - }, - "hostName": { - "description": "Qualified name of host", - "type": "string", - "default": "" - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string", - "default": "" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated. Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated. Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "osType": { - "description": "the os type for the pool, must be supported by the provider", - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "status": { - "description": "EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "nodeImage": { - "type": "string" - }, - "sourceImageId": { - "description": "SourceImageId can be from packref's annotations or from pack.json", - "type": "string" - } - } - } - } - }, - "v1EdgeNativeCloudConfigSpec": { - "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig", - "type": "object", - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "properties": { - "clusterConfig": { - "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "overlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "hosts" - ], - "properties": { - "additionalLabels": { - "description": "AdditionalLabels", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "hosts": { - "type": "array", - "items": { - "description": "EdgeNativeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "IsCandidateCaption": { - "description": "Is Edge host nominated as candidate", - "type": "boolean", - "default": false, - "x-omitempty": false - }, - "caCert": { - "description": "CACert for TLS connections", - "type": "string" - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string", - "default": "" - }, - "hostName": { - "description": "Qualified name of host", - "type": "string", - "default": "" - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string", - "default": "" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated. Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated. Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "osType": { - "description": "the os type for the pool, must be supported by the provider", - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1EdgeNativeCloudConfigStatus": { - "description": "EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "nodeImage": { - "type": "string" - }, - "sourceImageId": { - "description": "SourceImageId can be from packref's annotations or from pack.json", - "type": "string" - } - } - }, - "v1EdgeNativeClusterConfig": { - "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "overlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "v1EdgeNativeControlPlaneEndPoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "v1EdgeNativeHost": { - "description": "EdgeNativeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "IsCandidateCaption": { - "description": "Is Edge host nominated as candidate", - "type": "boolean", - "default": false, - "x-omitempty": false - }, - "caCert": { - "description": "CACert for TLS connections", - "type": "string" - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string", - "default": "" - }, - "hostName": { - "description": "Qualified name of host", - "type": "string", - "default": "" - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string", - "default": "" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated. Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated. Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - }, - "v1EdgeNativeInstanceType": { - "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node", - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int32" - }, - "name": { - "description": "Name is the instance name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "v1EdgeNativeMachine": { - "description": "EdgeNative cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EdgeNative cloud VM definition spec", - "type": "object", - "properties": { - "edgeHostUid": { - "type": "string" - }, - "instanceType": { - "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node", - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int32" - }, - "name": { - "description": "Name is the instance name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1EdgeNativeMachinePoolCloudConfigEntity": { - "required": [ - "edgeHosts" - ], - "properties": { - "edgeHosts": { - "type": "array", - "uniqueItems": true, - "items": { - "required": [ - "hostUid" - ], - "properties": { - "hostName": { - "description": "Edge host name", - "type": "string" - }, - "hostUid": { - "description": "Edge host id", - "type": "string" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated - Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated - Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - } - } - }, - "v1EdgeNativeMachinePoolConfig": { - "type": "object", - "required": [ - "hosts" - ], - "properties": { - "additionalLabels": { - "description": "AdditionalLabels", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "hosts": { - "type": "array", - "items": { - "description": "EdgeNativeHost is the underlying appliance", - "type": "object", - "required": [ - "hostUid", - "hostAddress" - ], - "properties": { - "IsCandidateCaption": { - "description": "Is Edge host nominated as candidate", - "type": "boolean", - "default": false, - "x-omitempty": false - }, - "caCert": { - "description": "CACert for TLS connections", - "type": "string" - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the Host", - "type": "string", - "default": "" - }, - "hostName": { - "description": "Qualified name of host", - "type": "string", - "default": "" - }, - "hostUid": { - "description": "HostUid is the ID of the EdgeHost", - "type": "string", - "default": "" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated. Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated. Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "osType": { - "description": "the os type for the pool, must be supported by the provider", - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1EdgeNativeMachinePoolConfigEntity": { - "type": "object", - "properties": { - "cloudConfig": { - "required": [ - "edgeHosts" - ], - "properties": { - "edgeHosts": { - "type": "array", - "uniqueItems": true, - "items": { - "required": [ - "hostUid" - ], - "properties": { - "hostName": { - "description": "Edge host name", - "type": "string" - }, - "hostUid": { - "description": "Edge host id", - "type": "string" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated - Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated - Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1EdgeNativeMachinePoolHostEntity": { - "required": [ - "hostUid" - ], - "properties": { - "hostName": { - "description": "Edge host name", - "type": "string" - }, - "hostUid": { - "description": "Edge host id", - "type": "string" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated - Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated - Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - }, - "v1EdgeNativeMachineSpec": { - "description": "EdgeNative cloud VM definition spec", - "type": "object", - "properties": { - "edgeHostUid": { - "type": "string" - }, - "instanceType": { - "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node", - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int32" - }, - "name": { - "description": "Name is the instance name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - } - } - }, - "v1EdgeNativeMachines": { - "description": "EdgeNative machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "EdgeNative cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EdgeNative cloud VM definition spec", - "type": "object", - "properties": { - "edgeHostUid": { - "type": "string" - }, - "instanceType": { - "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node", - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int32" - }, - "name": { - "description": "Name is the instance name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1EdgeNativeNic": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1EdgeNativeOverlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1EdgeNativeTwoNodeCandidateEntity": { - "type": "object", - "properties": { - "primaryEdgeHost": { - "type": "string" - }, - "secondaryEdgeHost": { - "type": "string" - } - } - }, - "v1EdgeServiceLogin": { - "description": "System service login input", - "type": "object", - "properties": { - "authToken": { - "description": "authToken helps in two step verification for the authorization.", - "type": "string" - }, - "edgeHostUid": { - "type": "string" - }, - "serviceName": { - "type": "string" - }, - "serviceVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1EdgeToken": { - "description": "Edge token information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Edge token specification", - "type": "object", - "properties": { - "defaultProject": { - "description": "Edge token project information", - "type": "object", - "properties": { - "name": { - "description": "Project name", - "type": "string" - }, - "uid": { - "description": "Project uid", - "type": "string" - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "token": { - "description": "Edge token", - "type": "string" - } - } - }, - "status": { - "description": "Edge token status", - "type": "object", - "properties": { - "isActive": { - "description": "Set to 'true', if the token is active", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1EdgeTokenActiveState": { - "description": "Edge token active state", - "properties": { - "isActive": { - "description": "Set to 'true', if the token is active", - "type": "boolean" - } - } - }, - "v1EdgeTokenEntity": { - "description": "Edge token request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Edge token specification", - "type": "object", - "properties": { - "defaultProjectUid": { - "description": "Default project where the edgehost will be placed on the token authorization", - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1EdgeTokenProject": { - "description": "Edge token project information", - "type": "object", - "properties": { - "name": { - "description": "Project name", - "type": "string" - }, - "uid": { - "description": "Project uid", - "type": "string" - } - } - }, - "v1EdgeTokenSpec": { - "description": "Edge token specification", - "type": "object", - "properties": { - "defaultProject": { - "description": "Edge token project information", - "type": "object", - "properties": { - "name": { - "description": "Project name", - "type": "string" - }, - "uid": { - "description": "Project uid", - "type": "string" - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "token": { - "description": "Edge token", - "type": "string" - } - } - }, - "v1EdgeTokenSpecEntity": { - "description": "Edge token specification", - "type": "object", - "properties": { - "defaultProjectUid": { - "description": "Default project where the edgehost will be placed on the token authorization", - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1EdgeTokenSpecUpdate": { - "description": "Edge token spec to be updated", - "properties": { - "defaultProjectUid": { - "description": "Default project where the edgehost will be placed on the token authorization", - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1EdgeTokenStatus": { - "description": "Edge token status", - "type": "object", - "properties": { - "isActive": { - "description": "Set to 'true', if the token is active", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1EdgeTokenUpdate": { - "description": "Edge token update request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Edge token spec to be updated", - "properties": { - "defaultProjectUid": { - "description": "Default project where the edgehost will be placed on the token authorization", - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1EdgeTokens": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of edge tokens", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Edge token information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Edge token specification", - "type": "object", - "properties": { - "defaultProject": { - "description": "Edge token project information", - "type": "object", - "properties": { - "name": { - "description": "Project name", - "type": "string" - }, - "uid": { - "description": "Project uid", - "type": "string" - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "token": { - "description": "Edge token", - "type": "string" - } - } - }, - "status": { - "description": "Edge token status", - "type": "object", - "properties": { - "isActive": { - "description": "Set to 'true', if the token is active", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1EksAddon": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - }, - "v1EksCloudClusterConfigEntity": { - "description": "EKS cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "EksClusterConfig defines EKS specific config", - "type": "object", - "required": [ - "region" - ], - "properties": { - "addons": { - "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", - "type": "array", - "items": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - } - }, - "bastionDisabled": { - "description": "BastionDisabled is the option to disable bastion node", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "encryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "endpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "region": { - "description": "The AWS Region the cluster lives in.", - "type": "string" - }, - "sshKeyName": { - "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - } - } - }, - "v1EksCloudConfig": { - "description": "EksCloudConfig is the Schema for the ekscloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "EksCloudConfigSpec defines the cloud configuration input by user", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "EksClusterConfig defines EKS specific config", - "type": "object", - "required": [ - "region" - ], - "properties": { - "addons": { - "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", - "type": "array", - "items": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - } - }, - "bastionDisabled": { - "description": "BastionDisabled is the option to disable bastion node", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "encryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "endpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "region": { - "description": "The AWS Region the cluster lives in.", - "type": "string" - }, - "sshKeyName": { - "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "fargateProfiles": { - "type": "array", - "items": { - "description": "FargateProfile defines the desired state of FargateProfile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "name specifies the profile name.", - "type": "string" - }, - "selectors": { - "description": "Selectors specify fargate pod selectors.", - "type": "array", - "items": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "type": "object", - "required": [ - "namespace" - ], - "properties": { - "labels": { - "description": "Labels specifies which pod labels this selector should match.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" - } - } - } - }, - "subnetIds": { - "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1EksCloudConfigSpec": { - "description": "EksCloudConfigSpec defines the cloud configuration input by user", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "EksClusterConfig defines EKS specific config", - "type": "object", - "required": [ - "region" - ], - "properties": { - "addons": { - "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", - "type": "array", - "items": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - } - }, - "bastionDisabled": { - "description": "BastionDisabled is the option to disable bastion node", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "encryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "endpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "region": { - "description": "The AWS Region the cluster lives in.", - "type": "string" - }, - "sshKeyName": { - "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "fargateProfiles": { - "type": "array", - "items": { - "description": "FargateProfile defines the desired state of FargateProfile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "name specifies the profile name.", - "type": "string" - }, - "selectors": { - "description": "Selectors specify fargate pod selectors.", - "type": "array", - "items": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "type": "object", - "required": [ - "namespace" - ], - "properties": { - "labels": { - "description": "Labels specifies which pod labels this selector should match.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" - } - } - } - }, - "subnetIds": { - "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "v1EksClusterConfig": { - "description": "EksClusterConfig defines EKS specific config", - "type": "object", - "required": [ - "region" - ], - "properties": { - "addons": { - "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", - "type": "array", - "items": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - } - }, - "bastionDisabled": { - "description": "BastionDisabled is the option to disable bastion node", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "encryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "endpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "region": { - "description": "The AWS Region the cluster lives in.", - "type": "string" - }, - "sshKeyName": { - "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "v1EksClusterConfigEndpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1EksFargateProfiles": { - "description": "Fargate profiles", - "type": "object", - "properties": { - "fargateProfiles": { - "type": "array", - "items": { - "description": "FargateProfile defines the desired state of FargateProfile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "name specifies the profile name.", - "type": "string" - }, - "selectors": { - "description": "Selectors specify fargate pod selectors.", - "type": "array", - "items": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "type": "object", - "required": [ - "namespace" - ], - "properties": { - "labels": { - "description": "Labels specifies which pod labels this selector should match.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" - } - } - } - }, - "subnetIds": { - "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1EksMachineCloudConfigEntity": { - "properties": { - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "v1EksMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1EksMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "properties": { - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1EksSubnetEntity": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - }, - "v1EncryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1Event": { - "description": "Describes the component event details", - "type": "object", - "properties": { - "involvedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "message": { - "description": "Describes message associated with the event", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "reason": { - "description": "Describes the reason for the event", - "type": "string" - }, - "relatedObject": { - "description": "Object for which the event is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "severity": { - "description": "Describes the gravitas for the event", - "type": "string" - }, - "source": { - "description": "Describes the origin for the event", - "type": "object", - "properties": { - "component": { - "description": "Describes the component where event originated", - "type": "string" - }, - "host": { - "description": "Describes the host where event originated", - "type": "string" - } - } - } - } - }, - "v1EventRelatedObject": { - "description": "Object for which the event is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1EventSource": { - "description": "Describes the origin for the event", - "type": "object", - "properties": { - "component": { - "description": "Describes the component where event originated", - "type": "string" - }, - "host": { - "description": "Describes the host where event originated", - "type": "string" - } - } - }, - "v1Events": { - "description": "An array of component events items", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Describes a list of returned component events", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the component event details", - "type": "object", - "properties": { - "involvedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "message": { - "description": "Describes message associated with the event", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "reason": { - "description": "Describes the reason for the event", - "type": "string" - }, - "relatedObject": { - "description": "Object for which the event is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "severity": { - "description": "Describes the gravitas for the event", - "type": "string" - }, - "source": { - "description": "Describes the origin for the event", - "type": "object", - "properties": { - "component": { - "description": "Describes the component where event originated", - "type": "string" - }, - "host": { - "description": "Describes the host where event originated", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1EventsObjectsEntity": { - "type": "object", - "required": [ - "resourceType", - "resourceUid" - ], - "properties": { - "resourceType": { - "type": "string" - }, - "resourceUid": { - "type": "string" - } - } - }, - "v1EventsRelatedObjectsEntity": { - "type": "object", - "required": [ - "relatedObjectUids" - ], - "properties": { - "relatedObjectUids": { - "description": "List of uids of the related object", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1FargateProfile": { - "description": "FargateProfile defines the desired state of FargateProfile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "name specifies the profile name.", - "type": "string" - }, - "selectors": { - "description": "Selectors specify fargate pod selectors.", - "type": "array", - "items": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "type": "object", - "required": [ - "namespace" - ], - "properties": { - "labels": { - "description": "Labels specifies which pod labels this selector should match.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" - } - } - } - }, - "subnetIds": { - "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1FargateSelector": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "type": "object", - "required": [ - "namespace" - ], - "properties": { - "labels": { - "description": "Labels specifies which pod labels this selector should match.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" - } - } - }, - "v1Feature": { - "description": "Feature response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Feature spec", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "key": { - "description": "Feature key", - "type": "string" - } - } - } - } - }, - "v1FeatureFlagPing": { - "type": "object", - "properties": { - "msg": { - "type": "string" - } - } - }, - "v1FeatureSpec": { - "description": "Feature spec", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "key": { - "description": "Feature key", - "type": "string" - } - } - }, - "v1FeatureUpdate": { - "description": "Feature update spec", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Feature update spec", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - } - } - } - } - }, - "v1FeatureUpdateSpec": { - "description": "Feature update spec", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - } - } - }, - "v1Features": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of features", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Feature response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Feature spec", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "key": { - "description": "Feature key", - "type": "string" - } - } - } - } - } - } - } - }, - "v1FileUploadResponse": { - "description": "File upload response", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1FilterArray": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - }, - "v1FilterIntRange": { - "type": "object", - "properties": { - "eq": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "gt": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "gte": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "lt": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "lte": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "ne": { - "type": "integer", - "format": "int32", - "x-nullable": true - } - } - }, - "v1FilterMetadata": { - "description": "Filter metadata object", - "type": "object", - "properties": { - "filterType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1FilterNumberRange": { - "type": "object", - "properties": { - "eq": { - "type": "number", - "x-nullable": true - }, - "gt": { - "type": "number", - "x-nullable": true - }, - "gte": { - "type": "number", - "x-nullable": true - }, - "lt": { - "type": "number", - "x-nullable": true - }, - "lte": { - "type": "number", - "x-nullable": true - }, - "ne": { - "type": "number", - "x-nullable": true - } - } - }, - "v1FilterString": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "v1FilterSummary": { - "description": "Filter summary object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "properties": { - "filterType": { - "type": "string" - } - } - } - } - }, - "v1FilterSummarySpec": { - "properties": { - "filterType": { - "type": "string" - } - } - }, - "v1FilterVersionString": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "gt": { - "type": "string", - "x-nullable": true - }, - "lt": { - "type": "string", - "x-nullable": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "v1FiltersMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter metadata object", - "type": "object", - "properties": { - "filterType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1FiltersSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter summary object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "properties": { - "filterType": { - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1FipsSettings": { - "description": "FIPS configuration", - "properties": { - "fipsClusterFeatureConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "fipsClusterImportConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "fipsPackConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - } - } - }, - "v1FreemiumUsage": { - "type": "object", - "properties": { - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1FreemiumUsageLimit": { - "type": "object", - "properties": { - "activeClusters": { - "type": "integer", - "x-omitempty": false - }, - "overageUsage": { - "type": "number", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1GPUConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "v1GPUDeviceSpec": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "v1GcpAccount": { - "description": "GCP account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileName": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1GcpAccountEntity": { - "description": "GCP account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1GcpAccountEntitySpec": { - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "v1GcpAccountNameValidateSpec": { - "description": "Gcp cloud account name validate spec", - "type": "object", - "required": [ - "credentials", - "bucketName" - ], - "properties": { - "bucketName": { - "description": "Bucket name in the GCP", - "type": "string" - }, - "credentials": { - "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored", - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "projectId": { - "description": "ProjectId in the GCP", - "type": "string" - } - } - }, - "v1GcpAccountSpec": { - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileName": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "v1GcpAccountValidateSpec": { - "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored", - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "v1GcpAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "GCP account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileName": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1GcpCloudAccountValidateEntity": { - "description": "Gcp cloud account spec", - "type": "object", - "properties": { - "spec": { - "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored", - "type": "object", - "properties": { - "jsonCredentials": { - "description": "Gcp cloud account json credentials", - "type": "string" - }, - "jsonCredentialsFileUid": { - "description": "Reference of the credentials stored in the file", - "type": "string" - } - } - } - } - }, - "v1GcpCloudClusterConfigEntity": { - "description": "Gcp cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "project", - "region" - ], - "properties": { - "managedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" - } - } - } - } - }, - "v1GcpCloudConfig": { - "description": "GcpCloudConfig is the Schema for the gcpcloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "project", - "region" - ], - "properties": { - "managedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane", - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "status": { - "description": "GcpCloudConfigStatus defines the observed state of GcpCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "images": { - "description": "Refers to GCP image", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "description": "this map will be for ansible roles present in each pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - } - } - }, - "v1GcpCloudConfigSpec": { - "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "project", - "region" - ], - "properties": { - "managedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane", - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1GcpCloudConfigStatus": { - "description": "GcpCloudConfigStatus defines the observed state of GcpCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "images": { - "description": "Refers to GCP image", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "roleDigest": { - "description": "this map will be for ansible roles present in each pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - }, - "v1GcpClusterConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "project", - "region" - ], - "properties": { - "managedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" - } - } - }, - "v1GcpImage": { - "description": "Refers to GCP image", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "os": { - "type": "string" - }, - "region": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1GcpImageUrlEntity": { - "description": "Gcp image url entity", - "type": "object", - "properties": { - "imageFamily": { - "description": "The name of the image family to which this image belongs", - "type": "string" - }, - "imageUrl": { - "description": "Server-defined URL for the resource", - "type": "string" - }, - "name": { - "description": "Name of the resource", - "type": "string" - } - } - }, - "v1GcpInstanceTypes": { - "description": "Retrieves a list of GCP instance types", - "type": "object", - "properties": { - "instanceTypes": { - "description": "List of GCP instance types", - "type": "array", - "items": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - } - } - }, - "v1GcpMachine": { - "description": "GCP cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "GCP cloud VM definition spec", - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "image": { - "type": "string" - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "GCP network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "project": { - "type": "string" - }, - "region": { - "type": "string" - }, - "rootDeviceSize": { - "type": "integer", - "format": "int64" - }, - "zone": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1GcpMachinePoolCloudConfigEntity": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "v1GcpMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane", - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1GcpMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1GcpMachineSpec": { - "description": "GCP cloud VM definition spec", - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "image": { - "type": "string" - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "GCP network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "project": { - "type": "string" - }, - "region": { - "type": "string" - }, - "rootDeviceSize": { - "type": "integer", - "format": "int64" - }, - "zone": { - "type": "string" - } - } - }, - "v1GcpMachines": { - "description": "GCP machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "GCP cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "GCP cloud VM definition spec", - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "image": { - "type": "string" - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "GCP network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "project": { - "type": "string" - }, - "region": { - "type": "string" - }, - "rootDeviceSize": { - "type": "integer", - "format": "int64" - }, - "zone": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1GcpManagedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "v1GcpNetwork": { - "description": "GCP network enity is a virtual version of a physical network", - "type": "object", - "properties": { - "name": { - "description": "GCP network name", - "type": "string" - }, - "subnets": { - "description": "List of GCP subnet", - "type": "array", - "items": { - "description": "Subnets are regional resources, and have IP address ranges associated with them", - "type": "object", - "properties": { - "id": { - "description": "GCP subnet id", - "type": "string" - }, - "name": { - "description": "GCP subnet name", - "type": "string" - } - } - } - } - } - }, - "v1GcpNetworks": { - "description": "List of GCP networks", - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "description": "GCP network enity is a virtual version of a physical network", - "type": "object", - "properties": { - "name": { - "description": "GCP network name", - "type": "string" - }, - "subnets": { - "description": "List of GCP subnet", - "type": "array", - "items": { - "description": "Subnets are regional resources, and have IP address ranges associated with them", - "type": "object", - "properties": { - "id": { - "description": "GCP subnet id", - "type": "string" - }, - "name": { - "description": "GCP subnet name", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1GcpNic": { - "description": "GCP network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1GcpProject": { - "description": "GCP project organizes all Google Cloud resources", - "type": "object", - "properties": { - "id": { - "description": "GCP project id", - "type": "string" - }, - "name": { - "description": "GCP project name", - "type": "string" - } - } - }, - "v1GcpProjects": { - "description": "List of GCP Projects", - "type": "object", - "properties": { - "projects": { - "description": "List of GCP Projects", - "type": "array", - "items": { - "description": "GCP project organizes all Google Cloud resources", - "type": "object", - "properties": { - "id": { - "description": "GCP project id", - "type": "string" - }, - "name": { - "description": "GCP project name", - "type": "string" - } - } - } - } - } - }, - "v1GcpRegion": { - "description": "Geographical region made up of zones where you can host your GCP resources", - "type": "object", - "properties": { - "name": { - "description": "GCP region name", - "type": "string" - }, - "status": { - "description": "GCP region status", - "type": "string" - } - } - }, - "v1GcpRegions": { - "description": "List of GCP Regions", - "type": "object", - "properties": { - "regions": { - "type": "array", - "items": { - "description": "Geographical region made up of zones where you can host your GCP resources", - "type": "object", - "properties": { - "name": { - "description": "GCP region name", - "type": "string" - }, - "status": { - "description": "GCP region status", - "type": "string" - } - } - } - } - } - }, - "v1GcpStorageConfig": { - "description": "GCP storage config object", - "type": "object", - "required": [ - "bucketName", - "credentials" - ], - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "projectId": { - "description": "GCP project id", - "type": "string" - } - } - }, - "v1GcpStorageTypes": { - "description": "List of GCP storage types", - "type": "object", - "properties": { - "storageTypes": { - "type": "array", - "items": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1GcpSubnet": { - "description": "Subnets are regional resources, and have IP address ranges associated with them", - "type": "object", - "properties": { - "id": { - "description": "GCP subnet id", - "type": "string" - }, - "name": { - "description": "GCP subnet name", - "type": "string" - } - } - }, - "v1GcpSubnetEntity": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - }, - "v1GcpZone": { - "description": "A zone is a deployment area for Google Cloud resources within a region", - "type": "object", - "properties": { - "name": { - "description": "GCP zone name", - "type": "string" - } - } - }, - "v1GcpZones": { - "description": "List of GCP zones", - "type": "object", - "properties": { - "zones": { - "type": "array", - "items": { - "description": "A zone is a deployment area for Google Cloud resources within a region", - "type": "object", - "properties": { - "name": { - "description": "GCP zone name", - "type": "string" - } - } - } - } - } - }, - "v1GenericCloudClusterConfigEntity": { - "description": "Generic cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - } - } - }, - "v1GenericCloudConfig": { - "description": "Generic CloudConfig for all cloud types", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Generic CloudConfig spec for all cloud types", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - }, - "edgeHostRefs": { - "description": "Appliances (Edge Host) uids", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - } - } - }, - "v1GenericCloudConfigSpec": { - "description": "Generic CloudConfig spec for all cloud types", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - }, - "edgeHostRefs": { - "description": "Appliances (Edge Host) uids", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1GenericClusterConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - }, - "v1GenericInstanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "v1GenericMachine": { - "description": "Generic cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Generic cloud VM definition spec", - "properties": { - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1GenericMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane" - ], - "properties": { - "instanceType": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1GenericMachinePoolConfigEntity": { - "properties": { - "cloudConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1GenericMachineSpec": { - "description": "Generic cloud VM definition spec", - "properties": { - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "v1GenericMachines": { - "description": "Generic machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Generic cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Generic cloud VM definition spec", - "properties": { - "hostName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1GenericNic": { - "description": "Generic network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1GeolocationLatlong": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1GitRepoFileContent": { - "type": "object", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "repoName": { - "type": "string" - }, - "sha": { - "type": "string" - } - } - }, - "v1GrpcClientMonitoringData": { - "type": "object", - "properties": { - "clientUid": { - "type": "string" - }, - "receivedBroadcastCount": { - "type": "integer" - }, - "receivedPublishedCount": { - "type": "integer" - }, - "sentBroadcastCount": { - "type": "integer" - }, - "sentPublishedCount": { - "type": "integer" - }, - "subjects": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1GrpcConfiguration": { - "description": "Describes the response that contains the grpc configuration to establish connection", - "type": "object", - "properties": { - "preferredServer": { - "type": "object", - "properties": { - "endpoint": { - "description": "Describes the URL where the client has to connect to the grpc server", - "type": "string" - }, - "tls": { - "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", - "type": "object", - "properties": { - "caCert": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - } - } - }, - "servers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "endpoint": { - "description": "Describes the URL where the client has to connect to the grpc server", - "type": "string" - }, - "tls": { - "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", - "type": "object", - "properties": { - "caCert": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - } - } - } - } - } - }, - "v1GrpcEndpoint": { - "type": "object", - "properties": { - "endpoint": { - "description": "Describes the URL where the client has to connect to the grpc server", - "type": "string" - }, - "tls": { - "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", - "type": "object", - "properties": { - "caCert": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - } - } - }, - "v1GrpcServerMonitoringData": { - "type": "object", - "properties": { - "clients": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "clientUid": { - "type": "string" - }, - "receivedBroadcastCount": { - "type": "integer" - }, - "receivedPublishedCount": { - "type": "integer" - }, - "sentBroadcastCount": { - "type": "integer" - }, - "sentPublishedCount": { - "type": "integer" - }, - "subjects": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "isError": { - "type": "boolean" - }, - "messageLogs": { - "type": "array", - "items": { - "type": "string" - } - }, - "subjects": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "broadcastCount": { - "type": "integer" - }, - "clients": { - "type": "array", - "items": { - "type": "string" - } - }, - "publishedCount": { - "type": "integer" - }, - "subject": { - "type": "string" - } - } - } - }, - "totalClients": { - "type": "integer" - }, - "totalSubjects": { - "type": "integer" - } - } - }, - "v1GrpcServersMonitoringData": { - "type": "object", - "properties": { - "servers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "clients": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "clientUid": { - "type": "string" - }, - "receivedBroadcastCount": { - "type": "integer" - }, - "receivedPublishedCount": { - "type": "integer" - }, - "sentBroadcastCount": { - "type": "integer" - }, - "sentPublishedCount": { - "type": "integer" - }, - "subjects": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "isError": { - "type": "boolean" - }, - "messageLogs": { - "type": "array", - "items": { - "type": "string" - } - }, - "subjects": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "broadcastCount": { - "type": "integer" - }, - "clients": { - "type": "array", - "items": { - "type": "string" - } - }, - "publishedCount": { - "type": "integer" - }, - "subject": { - "type": "string" - } - } - } - }, - "totalClients": { - "type": "integer" - }, - "totalSubjects": { - "type": "integer" - } - } - } - } - } - }, - "v1GrpcSubjectMonitoringData": { - "type": "object", - "properties": { - "broadcastCount": { - "type": "integer" - }, - "clients": { - "type": "array", - "items": { - "type": "string" - } - }, - "publishedCount": { - "type": "integer" - }, - "subject": { - "type": "string" - } - } - }, - "v1HealthCheck": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1HealthLocks": { - "type": "object", - "properties": { - "expiredLocks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "expireAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1HealthPing": { - "type": "object", - "properties": { - "msg": { - "type": "string" - } - } - }, - "v1HelmChartOption": { - "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1HelmRegistries": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Helm registry information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Helm registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "registryUid": { - "description": "Helm registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Status of the helm registry", - "type": "object", - "properties": { - "helmSyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1HelmRegistriesSummary": { - "description": "Helm Registries Summary", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Helm Registry summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Helm Registry spec summary", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Helm registry status summary", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1HelmRegistry": { - "description": "Helm registry information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Helm registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "registryUid": { - "description": "Helm registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Status of the helm registry", - "type": "object", - "properties": { - "helmSyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "v1HelmRegistryCreateOption": { - "description": "Helm registry create options", - "type": "object", - "properties": { - "charts": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "skipSync": { - "type": "boolean" - } - } - }, - "v1HelmRegistryEntity": { - "description": "Helm registry information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Helm registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "createOption": { - "description": "Helm registry create options", - "type": "object", - "properties": { - "charts": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "skipSync": { - "type": "boolean" - } - } - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - } - } - }, - "v1HelmRegistrySpec": { - "description": "Helm registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "registryUid": { - "description": "Helm registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1HelmRegistrySpecEntity": { - "description": "Helm registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "createOption": { - "description": "Helm registry create options", - "type": "object", - "properties": { - "charts": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "skipSync": { - "type": "boolean" - } - } - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1HelmRegistrySpecSummary": { - "description": "Helm Registry spec summary", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" - } - } - }, - "v1HelmRegistryStatus": { - "description": "Status of the helm registry", - "type": "object", - "properties": { - "helmSyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - }, - "v1HelmRegistryStatusSummary": { - "description": "Helm registry status summary", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - }, - "v1HelmRegistrySummary": { - "description": "Helm Registry summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Helm Registry spec summary", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Helm registry status summary", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "v1HostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "v1HostClusterConfigEntity": { - "type": "object", - "properties": { - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - } - } - }, - "v1HostClusterConfigResponse": { - "properties": { - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - }, - "v1HostClusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "v1HostClusterEndpointConfig": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "v1HttpPatch": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - }, - "v1HubbleInfo": { - "type": "object", - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiPort": { - "type": "string" - }, - "natsEndpoint": { - "type": "string" - }, - "uiEndpoint": { - "type": "string" - }, - "uiPort": { - "type": "string" - } - } - }, - "v1IPPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "v1IdentityProvider": { - "description": "Describes a predefined Identity Provider (IDP)", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1IdentityProviders": { - "description": "Describes a list of predefined Identity Provider (IDP)", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes a predefined Identity Provider (IDP)", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "v1ImportClusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - }, - "v1ImportEdgeHostConfig": { - "type": "object", - "properties": { - "edgeHostUid": { - "description": "Deprecated. Use 'edgeHostUids' field", - "type": "string" - }, - "edgeHostUids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1InfraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "v1IngressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "v1InstallerStatus": { - "description": "Spectro cluster installer status", - "type": "object", - "properties": { - "clusterMigration": { - "description": "Spectro cluster migration status", - "type": "object", - "properties": { - "database": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "tenant": { - "description": "Spectro tenant migration status", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "clusterState": { - "type": "string" - }, - "endpoint": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1InstanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "v1InstanceCost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "v1InstancePrice": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - }, - "v1InstanceType": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - }, - "v1Invoice": { - "description": "Invoice object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Invoice specification", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "billingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "credits": { - "description": "Invoice credits object", - "properties": { - "alloyFreeCredits": { - "description": "Credits allocated for import clusters", - "type": "number", - "format": "int64" - }, - "pureFreeCredits": { - "description": "Credits allocated for managed clusters", - "type": "number", - "format": "int64" - } - } - }, - "envType": { - "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", - "type": "string" - }, - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "paymentUnit": { - "type": "string", - "enum": [ - "usd" - ] - }, - "plan": { - "description": "Invoice plan object", - "properties": { - "freeCredits": { - "description": "List of free credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - }, - "plantype": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "slaCredits": { - "description": "List of SLA credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - } - } - } - } - }, - "status": { - "description": "Invoice Status", - "properties": { - "billableAmount": { - "description": "Total billable amount", - "type": "number", - "format": "float64" - }, - "productInvoice": { - "description": "Product invoice object", - "properties": { - "alloy": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "projects": { - "description": "List of project invoices", - "type": "array", - "items": { - "description": "Invoice project object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "projectName": { - "description": "Name of the project", - "type": "string" - }, - "projectUid": { - "description": "Project identifier", - "type": "string" - }, - "usage": { - "description": "Project usage object", - "properties": { - "alloy": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - } - }, - "states": { - "description": "List of invoice states", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Invoice state object", - "properties": { - "paymentMsg": { - "description": "Payment status message", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Paid", - "PaymentPending", - "PaymentInProgress", - "PaymentFailed" - ] - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "stripeInvoiceId": { - "description": "Stripe invoice uid", - "type": "string" - } - } - } - } - }, - "v1InvoiceBillingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1InvoiceCredits": { - "description": "Invoice credits object", - "properties": { - "alloyFreeCredits": { - "description": "Credits allocated for import clusters", - "type": "number", - "format": "int64" - }, - "pureFreeCredits": { - "description": "Credits allocated for managed clusters", - "type": "number", - "format": "int64" - } - } - }, - "v1InvoicePlan": { - "description": "Invoice plan object", - "properties": { - "freeCredits": { - "description": "List of free credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - }, - "plantype": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "slaCredits": { - "description": "List of SLA credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - } - } - }, - "v1InvoicePlanCredit": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - }, - "v1InvoiceProduct": { - "description": "Product invoice object", - "properties": { - "alloy": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "v1InvoiceProductData": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "v1InvoiceProject": { - "description": "Invoice project object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "projectName": { - "description": "Name of the project", - "type": "string" - }, - "projectUid": { - "description": "Project identifier", - "type": "string" - }, - "usage": { - "description": "Project usage object", - "properties": { - "alloy": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - }, - "v1InvoiceRetryRequest": { - "description": "Retry invoice request object", - "properties": { - "customerId": { - "description": "Customer invoice uid", - "type": "string" - }, - "invoiceUid": { - "description": "Invoice uid", - "type": "string" - }, - "paymentMethodId": { - "description": "Payment method uid", - "type": "string" - } - } - }, - "v1InvoiceSpec": { - "description": "Invoice specification", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "billingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "credits": { - "description": "Invoice credits object", - "properties": { - "alloyFreeCredits": { - "description": "Credits allocated for import clusters", - "type": "number", - "format": "int64" - }, - "pureFreeCredits": { - "description": "Credits allocated for managed clusters", - "type": "number", - "format": "int64" - } - } - }, - "envType": { - "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", - "type": "string" - }, - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "paymentUnit": { - "type": "string", - "enum": [ - "usd" - ] - }, - "plan": { - "description": "Invoice plan object", - "properties": { - "freeCredits": { - "description": "List of free credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - }, - "plantype": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "slaCredits": { - "description": "List of SLA credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - } - } - } - } - }, - "v1InvoiceState": { - "description": "Invoice state object", - "properties": { - "paymentMsg": { - "description": "Payment status message", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Paid", - "PaymentPending", - "PaymentInProgress", - "PaymentFailed" - ] - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1InvoiceStatus": { - "description": "Invoice Status", - "properties": { - "billableAmount": { - "description": "Total billable amount", - "type": "number", - "format": "float64" - }, - "productInvoice": { - "description": "Product invoice object", - "properties": { - "alloy": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "projects": { - "description": "List of project invoices", - "type": "array", - "items": { - "description": "Invoice project object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "projectName": { - "description": "Name of the project", - "type": "string" - }, - "projectUid": { - "description": "Project identifier", - "type": "string" - }, - "usage": { - "description": "Project usage object", - "properties": { - "alloy": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - } - }, - "states": { - "description": "List of invoice states", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Invoice state object", - "properties": { - "paymentMsg": { - "description": "Payment status message", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Paid", - "PaymentPending", - "PaymentInProgress", - "PaymentFailed" - ] - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "stripeInvoiceId": { - "description": "Stripe invoice uid", - "type": "string" - } - } - }, - "v1Invoices": { - "description": "List of invoices", - "type": "object", - "required": [ - "invoices" - ], - "properties": { - "invoices": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Invoice object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Invoice specification", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "billingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "credits": { - "description": "Invoice credits object", - "properties": { - "alloyFreeCredits": { - "description": "Credits allocated for import clusters", - "type": "number", - "format": "int64" - }, - "pureFreeCredits": { - "description": "Credits allocated for managed clusters", - "type": "number", - "format": "int64" - } - } - }, - "envType": { - "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", - "type": "string" - }, - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "paymentUnit": { - "type": "string", - "enum": [ - "usd" - ] - }, - "plan": { - "description": "Invoice plan object", - "properties": { - "freeCredits": { - "description": "List of free credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - }, - "plantype": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "slaCredits": { - "description": "List of SLA credits", - "type": "array", - "items": { - "description": "Invoice plan credit object", - "properties": { - "planCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "totalCpuCoreHours": { - "description": "Total used cpu core hours", - "type": "number", - "format": "int64" - } - } - } - } - } - } - } - }, - "status": { - "description": "Invoice Status", - "properties": { - "billableAmount": { - "description": "Total billable amount", - "type": "number", - "format": "float64" - }, - "productInvoice": { - "description": "Product invoice object", - "properties": { - "alloy": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Product invoice data", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "amount": { - "description": "Total amount", - "type": "number", - "format": "float64" - }, - "billableCredits": { - "description": "Credits to be billed", - "type": "number", - "format": "float64" - }, - "breachedCredits": { - "description": "Credits that are exceeds the allocated credits", - "type": "number", - "format": "float64" - }, - "discount": { - "description": "Applied discount", - "type": "number", - "format": "int64" - }, - "freeCredits": { - "description": "Allocated free credits", - "type": "number", - "format": "int64" - }, - "overageLimitPercentage": { - "description": "Allowed overage limit in percentage", - "type": "number", - "format": "int8" - }, - "tierName": { - "description": "Tier name", - "type": "string" - }, - "tierPrice": { - "description": "Tier price", - "type": "number", - "format": "float64" - }, - "totalUsedCredits": { - "description": "Total used credits", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "projects": { - "description": "List of project invoices", - "type": "array", - "items": { - "description": "Invoice project object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "projectName": { - "description": "Name of the project", - "type": "string" - }, - "projectUid": { - "description": "Project identifier", - "type": "string" - }, - "usage": { - "description": "Project usage object", - "properties": { - "alloy": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - } - }, - "states": { - "description": "List of invoice states", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Invoice state object", - "properties": { - "paymentMsg": { - "description": "Payment status message", - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Paid", - "PaymentPending", - "PaymentInProgress", - "PaymentFailed" - ] - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "stripeInvoiceId": { - "description": "Stripe invoice uid", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1IpPoolEntity": { - "description": "IP Pool entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } - } - }, - "status": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1IpPoolInputEntity": { - "description": "IP Pool input entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "pool" - ], - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean" - } - } - } - } - }, - "v1IpPoolStatus": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1IpPools": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "IP Pool entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } - } - }, - "status": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1JWKResponse": { - "type": "object", - "properties": { - "alg": { - "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key", - "type": "string" - }, - "e": { - "type": "string" - }, - "key_ops": { - "description": "The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used", - "type": "string" - }, - "kid": { - "description": "The \"kid\" (key ID) parameter is used to match a specific key", - "type": "string" - }, - "kty": { - "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"", - "type": "string" - }, - "n": { - "type": "string" - }, - "use": { - "description": "The \"use\" (public key use) parameter identifies the intended use of the public key", - "type": "string" - } - } - }, - "v1JWKSetResponse": { - "type": "object", - "properties": { - "keys": { - "description": "The value of the \"keys\" parameter is an array of JWK values", - "type": "array", - "items": { - "type": "object", - "properties": { - "alg": { - "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key", - "type": "string" - }, - "e": { - "type": "string" - }, - "key_ops": { - "description": "The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used", - "type": "string" - }, - "kid": { - "description": "The \"kid\" (key ID) parameter is used to match a specific key", - "type": "string" - }, - "kty": { - "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"", - "type": "string" - }, - "n": { - "type": "string" - }, - "use": { - "description": "The \"use\" (public key use) parameter identifies the intended use of the public key", - "type": "string" - } - } - } - } - } - }, - "v1JetAuthKey": { - "type": "object", - "properties": { - "authKey": { - "type": "string" - } - } - }, - "v1JetAuthKeyResponse": { - "type": "object", - "properties": { - "authKey": { - "type": "string" - } - } - }, - "v1JetServiceLogin": { - "description": "jet service login input", - "type": "object", - "properties": { - "authKey": { - "description": "authToken helps in two step verification for the authorization.", - "type": "string" - }, - "edgeHostUid": { - "type": "string" - }, - "hostClusterUid": { - "type": "string" - }, - "isSystem": { - "type": "boolean" - }, - "jetUid": { - "type": "string" - }, - "overlordUid": { - "type": "string" - }, - "serviceVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1KubeBenchEntity": { - "description": "KubeBench response", - "required": [ - "requestUid", - "status", - "reports" - ], - "properties": { - "reports": { - "type": "object", - "additionalProperties": { - "description": "KubeBench report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "KubeBench log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - }, - "v1KubeBenchLog": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "v1KubeBenchLogEntity": { - "description": "KubeBench log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "v1KubeBenchReport": { - "description": "Compliance Scan KubeBench Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeBench Log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - }, - "v1KubeBenchReportEntity": { - "description": "KubeBench report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "info": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "KubeBench log", - "properties": { - "description": { - "type": "string" - }, - "expected": { - "type": "string" - }, - "remediation": { - "type": "string" - }, - "state": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "warn": { - "type": "integer", - "format": "int32" - } - } - }, - "v1KubeHunterEntity": { - "description": "KubeHunter response", - "required": [ - "requestUid", - "status", - "reports" - ], - "properties": { - "reports": { - "type": "object", - "additionalProperties": { - "description": "KubeHunter report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "KubeHunter log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "description": "KubeHunter vulnerability data", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - }, - "v1KubeHunterLog": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - }, - "v1KubeHunterLogEntity": { - "description": "KubeHunter log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - }, - "v1KubeHunterReport": { - "description": "Compliance Scan KubeHunter Report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan KubeHunter Log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilites": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1KubeHunterReportEntity": { - "description": "KubeHunter report", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "KubeHunter log", - "properties": { - "description": { - "type": "string" - }, - "evidence": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "testId": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "description": "KubeHunter vulnerability data", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1KubeHunterVulnerabilities": { - "description": "Compliance Scan KubeHunter Vulnerabilities", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - }, - "v1KubeHunterVulnerabilityDataEntity": { - "description": "KubeHunter vulnerability data", - "properties": { - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - } - } - }, - "v1KubeMeta": { - "description": "Spectro cluster kube meta", - "type": "object", - "properties": { - "hasKubeConfig": { - "type": "boolean", - "x-omitempty": false - }, - "hasKubeConfigClient": { - "type": "boolean", - "x-omitempty": false - }, - "hasManifest": { - "type": "boolean", - "x-omitempty": false - }, - "kubernetesVersion": { - "type": "string" - } - } - }, - "v1LibvirtCloudClusterConfigEntity": { - "description": "Libvirt cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - } - } - }, - "v1LibvirtCloudConfig": { - "description": "LibvirtCloudConfig is the Schema for the libvirtcloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "LibvirtCloudConfigSpec defines the desired state of LibvirtCloudConfig", - "type": "object", - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements defines the configurations of the failureDomains(hosts) for the machine pool", - "type": "array", - "items": { - "type": "object", - "required": [ - "hostUid", - "hostAddress", - "networks", - "sourceStoragePool" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "gpuDevices": { - "description": "GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the LibvirtHost", - "type": "string" - }, - "hostIdentity": { - "type": "object", - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostUid": { - "description": "HostUid is the ID of the LibvirtHost", - "type": "string" - }, - "networks": { - "description": "Networks defines the network specifications of the vms in the machine pool", - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "description": "SourceStoragePool is the storage pool for the vm image", - "type": "string" - }, - "targetStoragePool": { - "description": "TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool", - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GB", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - } - } - } - }, - "status": { - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "nodeImages": { - "description": "NodeImages are the list of images generated on all the LibvirtHosts", - "type": "array", - "items": { - "description": "LibvirtImage is the Image generated on the LibvirtHost", - "type": "object", - "properties": { - "hostID": { - "description": "HostID is the ID of the LibvirtHost", - "type": "string" - }, - "imageName": { - "description": "ImageName is the name of the Libvirt image", - "type": "string" - }, - "storagePool": { - "description": "StoragePool is the name of the storagePool where is image is located", - "type": "string" - } - } - } - }, - "sourceImageId": { - "description": "SourceImageId can be from packref's annotations or from pack.json", - "type": "string" - } - } - } - } - }, - "v1LibvirtCloudConfigSpec": { - "description": "LibvirtCloudConfigSpec defines the desired state of LibvirtCloudConfig", - "type": "object", - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements defines the configurations of the failureDomains(hosts) for the machine pool", - "type": "array", - "items": { - "type": "object", - "required": [ - "hostUid", - "hostAddress", - "networks", - "sourceStoragePool" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "gpuDevices": { - "description": "GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the LibvirtHost", - "type": "string" - }, - "hostIdentity": { - "type": "object", - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostUid": { - "description": "HostUid is the ID of the LibvirtHost", - "type": "string" - }, - "networks": { - "description": "Networks defines the network specifications of the vms in the machine pool", - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "description": "SourceStoragePool is the storage pool for the vm image", - "type": "string" - }, - "targetStoragePool": { - "description": "TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool", - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GB", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - } - } - } - }, - "v1LibvirtCloudConfigStatus": { - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "nodeImages": { - "description": "NodeImages are the list of images generated on all the LibvirtHosts", - "type": "array", - "items": { - "description": "LibvirtImage is the Image generated on the LibvirtHost", - "type": "object", - "properties": { - "hostID": { - "description": "HostID is the ID of the LibvirtHost", - "type": "string" - }, - "imageName": { - "description": "ImageName is the name of the Libvirt image", - "type": "string" - }, - "storagePool": { - "description": "StoragePool is the name of the storagePool where is image is located", - "type": "string" - } - } - } - }, - "sourceImageId": { - "description": "SourceImageId can be from packref's annotations or from pack.json", - "type": "string" - } - } - }, - "v1LibvirtClusterConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "v1LibvirtControlPlaneEndPoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "v1LibvirtDiskSpec": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - }, - "v1LibvirtHostIdentity": { - "type": "object", - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "v1LibvirtImage": { - "description": "LibvirtImage is the Image generated on the LibvirtHost", - "type": "object", - "properties": { - "hostID": { - "description": "HostID is the ID of the LibvirtHost", - "type": "string" - }, - "imageName": { - "description": "ImageName is the name of the Libvirt image", - "type": "string" - }, - "storagePool": { - "description": "StoragePool is the name of the storagePool where is image is located", - "type": "string" - } - } - }, - "v1LibvirtInstanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "v1LibvirtMachine": { - "description": "Libvirt cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "libvirt cloud VM definition spec", - "type": "object", - "properties": { - "disks": { - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "edgeHostUid": { - "type": "string" - }, - "failureDomain": { - "type": "string" - }, - "imageName": { - "type": "string" - }, - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Libvirt network interface", - "type": "object", - "required": [ - "macAddress" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "targetStoragePool": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1LibvirtMachinePoolCloudConfigEntity": { - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Libvirt placement config", - "type": "object", - "required": [ - "hostUid" - ], - "properties": { - "dataStoragePool": { - "type": "string" - }, - "gpuDevices": { - "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostUid": { - "type": "string" - }, - "networks": { - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "type": "string" - }, - "targetStoragePool": { - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GiB", - "type": "integer", - "format": "int32" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - }, - "v1LibvirtMachinePoolConfig": { - "type": "object", - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements defines the configurations of the failureDomains(hosts) for the machine pool", - "type": "array", - "items": { - "type": "object", - "required": [ - "hostUid", - "hostAddress", - "networks", - "sourceStoragePool" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "gpuDevices": { - "description": "GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the LibvirtHost", - "type": "string" - }, - "hostIdentity": { - "type": "object", - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostUid": { - "description": "HostUid is the ID of the LibvirtHost", - "type": "string" - }, - "networks": { - "description": "Networks defines the network specifications of the vms in the machine pool", - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "description": "SourceStoragePool is the storage pool for the vm image", - "type": "string" - }, - "targetStoragePool": { - "description": "TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool", - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GB", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - }, - "v1LibvirtMachinePoolConfigEntity": { - "type": "object", - "properties": { - "cloudConfig": { - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Libvirt placement config", - "type": "object", - "required": [ - "hostUid" - ], - "properties": { - "dataStoragePool": { - "type": "string" - }, - "gpuDevices": { - "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostUid": { - "type": "string" - }, - "networks": { - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "type": "string" - }, - "targetStoragePool": { - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GiB", - "type": "integer", - "format": "int32" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1LibvirtMachineSpec": { - "description": "libvirt cloud VM definition spec", - "type": "object", - "properties": { - "disks": { - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "edgeHostUid": { - "type": "string" - }, - "failureDomain": { - "type": "string" - }, - "imageName": { - "type": "string" - }, - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Libvirt network interface", - "type": "object", - "required": [ - "macAddress" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "targetStoragePool": { - "type": "string" - } - } - }, - "v1LibvirtMachines": { - "description": "Libvirt machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Libvirt cloud VM definition", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "libvirt cloud VM definition spec", - "type": "object", - "properties": { - "disks": { - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "edgeHostUid": { - "type": "string" - }, - "failureDomain": { - "type": "string" - }, - "imageName": { - "type": "string" - }, - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "Libvirt network interface", - "type": "object", - "required": [ - "macAddress" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "targetStoragePool": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1LibvirtNetworkSpec": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - }, - "v1LibvirtNicSpec": { - "description": "Libvirt network interface", - "type": "object", - "required": [ - "macAddress" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1LibvirtPlacementConfig": { - "type": "object", - "required": [ - "hostUid", - "hostAddress", - "networks", - "sourceStoragePool" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "gpuDevices": { - "description": "GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostAddress": { - "description": "HostAddress is a FQDN or IP address of the LibvirtHost", - "type": "string" - }, - "hostIdentity": { - "type": "object", - "properties": { - "caCert": { - "description": "CACert is the client CA certificate", - "type": "string" - }, - "mode": { - "description": "Mode indicates a system or session connection to the host", - "type": "string" - }, - "socketPath": { - "description": "SocketPath is an optional path to the socket on the host, if not using defaults", - "type": "string" - }, - "sshSecret": { - "type": "object", - "properties": { - "name": { - "description": "SSH secret name", - "type": "string" - }, - "privateKey": { - "description": "Private Key to access the host", - "type": "string" - } - } - } - } - }, - "hostUid": { - "description": "HostUid is the ID of the LibvirtHost", - "type": "string" - }, - "networks": { - "description": "Networks defines the network specifications of the vms in the machine pool", - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "description": "SourceStoragePool is the storage pool for the vm image", - "type": "string" - }, - "targetStoragePool": { - "description": "TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool", - "type": "string" - } - } - }, - "v1LibvirtPlacementEntity": { - "description": "Libvirt placement config", - "type": "object", - "required": [ - "hostUid" - ], - "properties": { - "dataStoragePool": { - "type": "string" - }, - "gpuDevices": { - "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostUid": { - "type": "string" - }, - "networks": { - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "type": "string" - }, - "targetStoragePool": { - "type": "string" - } - } - }, - "v1LifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "v1LifecycleConfigEntity": { - "type": "object", - "properties": { - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - } - } - }, - "v1LifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "v1ListMetaData": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - }, - "v1LoadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1LoadBalancerService": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - }, - "v1LoadBalancerSpec": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - }, - "v1LocationType": { - "description": "Location type", - "type": "string", - "default": "s3", - "enum": [ - "s3", - "gcp", - "minio" - ] - }, - "v1Lock": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "expireAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1Locks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "expireAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - }, - "v1Login": { - "description": "Login input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - } - } - }, - "v1LoginBannerSettings": { - "properties": { - "Message": { - "description": "Login banner message displayed to the user", - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "description": "Set to 'true' if login banner has to be displayed for user", - "type": "boolean", - "x-omitempty": false - }, - "title": { - "description": "Banner title displayed to the user", - "type": "string", - "x-omitempty": false - } - } - }, - "v1LoginResponse": { - "description": "Returns the allowed login method and information with the organization details", - "type": "object", - "properties": { - "appEnv": { - "description": "Describes the env type. Possible values [ saas, self-hosted, quick-start, enterprise, airgap]", - "type": "string" - }, - "authType": { - "description": "Describes the default mode of authentication. Possible values [password, sso]", - "type": "string", - "enum": [ - "password", - "sso" - ] - }, - "orgName": { - "description": "Organization name.", - "type": "string" - }, - "redirectUrl": { - "description": "Describes the default redirect Url for authentication. If authType is sso, it will have tenant configured saml/oidc idp url else it will be users organization url", - "type": "string", - "x-omitempty": false - }, - "rootDomain": { - "description": "Describes the domain url on which the saas is available", - "type": "string" - }, - "securityMode": { - "description": "Describes which security mode is enabled", - "type": "string" - }, - "ssoLogins": { - "description": "Describes the allowed sso logins", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the allowed sso login details", - "type": "object", - "properties": { - "displayName": { - "description": "Describes the display name for the sso login", - "type": "string" - }, - "logo": { - "description": "Describes the url path for the sso login", - "type": "string" - }, - "name": { - "description": "Describes the processed name for the sso login", - "type": "string" - }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "type": "string" - } - } - } - }, - "totalTenants": { - "description": "Describes the total number of tenant present in the system", - "type": "number", - "format": "int64" - } - } - }, - "v1LogoutResponse": { - "description": "Logout response specifying the redirect url", - "type": "object", - "properties": { - "redirectUrl": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1MaasAccount": { - "description": "Maas cloud account information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "apiKey", - "apiEndpoint" - ], - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiKey": { - "type": "string" - }, - "preferredSubnets": { - "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", - "type": "array", - "items": { - "type": "string", - "default": "" - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1MaasAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas cloud account information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "apiKey", - "apiEndpoint" - ], - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiKey": { - "type": "string" - }, - "preferredSubnets": { - "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", - "type": "array", - "items": { - "type": "string", - "default": "" - } - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1MaasCloudAccount": { - "type": "object", - "required": [ - "apiKey", - "apiEndpoint" - ], - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiKey": { - "type": "string" - }, - "preferredSubnets": { - "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", - "type": "array", - "items": { - "type": "string", - "default": "" - } - } - } - }, - "v1MaasCloudClusterConfigEntity": { - "description": "Maas cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "v1MaasCloudConfig": { - "description": "MaasCloudConfig is the Schema for the maascloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "MaasCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "status": { - "description": "MaasCloudConfigStatus defines the observed state of MaasCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "nodeImage": { - "description": "Name of the image", - "type": "object", - "properties": { - "name": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - } - } - }, - "v1MaasCloudConfigSpec": { - "description": "MaasCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1MaasCloudConfigStatus": { - "description": "MaasCloudConfigStatus defines the observed state of MaasCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "ansibleRoleDigest": { - "description": "For mold controller to identify if is there any changes in Pack", - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "nodeImage": { - "description": "Name of the image", - "type": "object", - "properties": { - "name": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - }, - "v1MaasClusterConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1MaasDomain": { - "description": "Maas domain", - "type": "object", - "properties": { - "name": { - "description": "Name of Maas domain", - "type": "string" - } - } - }, - "v1MaasDomains": { - "description": "List of Maas domains", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas domain", - "type": "object", - "properties": { - "name": { - "description": "Name of Maas domain", - "type": "string" - } - } - } - } - } - }, - "v1MaasImage": { - "description": "Name of the image", - "type": "object", - "properties": { - "name": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1MaasInstanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "v1MaasMachine": { - "description": "Maas cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Maas cloud VM definition spec", - "type": "object", - "properties": { - "az": { - "type": "string" - }, - "hostname": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "Maas network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1MaasMachineConfigEntity": { - "type": "object", - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "resourcePool": { - "type": "string" - } - } - }, - "v1MaasMachinePoolCloudConfigEntity": { - "type": "object", - "required": [ - "instanceType", - "resourcePool" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "resourcePool": { - "description": "the resource pool", - "type": "string" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1MaasMachinePoolConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1MaasMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType", - "resourcePool" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "resourcePool": { - "description": "the resource pool", - "type": "string" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1MaasMachineSpec": { - "description": "Maas cloud VM definition spec", - "type": "object", - "properties": { - "az": { - "type": "string" - }, - "hostname": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "Maas network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - } - } - }, - "v1MaasMachines": { - "description": "List of MAAS machines", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Maas cloud VM definition spec", - "type": "object", - "properties": { - "az": { - "type": "string" - }, - "hostname": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "Maas network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1MaasNic": { - "description": "Maas network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1MaasPool": { - "description": "Maas pool", - "type": "object", - "properties": { - "description": { - "description": "Description of Maas domain", - "type": "string" - }, - "name": { - "description": "Name of Maas pool", - "type": "string" - } - } - }, - "v1MaasPools": { - "description": "List of Maas pools", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas pool", - "type": "object", - "properties": { - "description": { - "description": "Description of Maas domain", - "type": "string" - }, - "name": { - "description": "Name of Maas pool", - "type": "string" - } - } - } - } - } - }, - "v1MaasSubnet": { - "description": "Maas subnet", - "type": "object", - "properties": { - "id": { - "description": "Id of Maas subnet", - "type": "integer" - }, - "name": { - "description": "Name of Maas subnet", - "type": "string" - }, - "space": { - "description": "Space associated with Maas subnet", - "type": "string" - }, - "vlans": { - "description": "Maas vlan entity", - "type": "object", - "properties": { - "fabric": { - "description": "Fabric associated with Maas Vlan", - "type": "string" - }, - "id": { - "description": "Id of Maas Vlan", - "type": "integer" - }, - "name": { - "description": "Name of Maas Vlan", - "type": "string" - } - } - } - } - }, - "v1MaasSubnets": { - "description": "List of Maas subnets", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas subnet", - "type": "object", - "properties": { - "id": { - "description": "Id of Maas subnet", - "type": "integer" - }, - "name": { - "description": "Name of Maas subnet", - "type": "string" - }, - "space": { - "description": "Space associated with Maas subnet", - "type": "string" - }, - "vlans": { - "description": "Maas vlan entity", - "type": "object", - "properties": { - "fabric": { - "description": "Fabric associated with Maas Vlan", - "type": "string" - }, - "id": { - "description": "Id of Maas Vlan", - "type": "integer" - }, - "name": { - "description": "Name of Maas Vlan", - "type": "string" - } - } - } - } - } - } - } - }, - "v1MaasTag": { - "description": "Maas tag", - "type": "object", - "properties": { - "comment": { - "description": "Comment on Maas tag", - "type": "string" - }, - "definition": { - "description": "Definition of Maas tag", - "type": "string" - }, - "kernelOpts": { - "description": "Kernel Opts on Maas tag", - "type": "string" - }, - "name": { - "description": "Name of Maas tag", - "type": "string" - }, - "resourceUri": { - "description": "Description of Maas tag", - "type": "string" - } - } - }, - "v1MaasTags": { - "description": "List of Maas tags", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas tag", - "type": "object", - "properties": { - "comment": { - "description": "Comment on Maas tag", - "type": "string" - }, - "definition": { - "description": "Definition of Maas tag", - "type": "string" - }, - "kernelOpts": { - "description": "Kernel Opts on Maas tag", - "type": "string" - }, - "name": { - "description": "Name of Maas tag", - "type": "string" - }, - "resourceUri": { - "description": "Description of Maas tag", - "type": "string" - } - } - } - } - } - }, - "v1MaasVlan": { - "description": "Maas vlan entity", - "type": "object", - "properties": { - "fabric": { - "description": "Fabric associated with Maas Vlan", - "type": "string" - }, - "id": { - "description": "Id of Maas Vlan", - "type": "integer" - }, - "name": { - "description": "Name of Maas Vlan", - "type": "string" - } - } - }, - "v1MaasZone": { - "description": "Maas zone", - "type": "object", - "properties": { - "description": { - "description": "Description of Maas domain", - "type": "string" - }, - "name": { - "description": "Name of Maas zone", - "type": "string" - } - } - }, - "v1MaasZones": { - "description": "List of Maas zones", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Maas zone", - "type": "object", - "properties": { - "description": { - "description": "Description of Maas domain", - "type": "string" - }, - "name": { - "description": "Name of Maas zone", - "type": "string" - } - } - } - } - } - }, - "v1MachineCertificate": { - "description": "K8 Certificates for control plane nodes", - "type": "object", - "properties": { - "certificateAuthorities": { - "description": "Applicable certificate authorities", - "type": "array", - "items": { - "description": "Certificate Authority", - "type": "object", - "properties": { - "certificates": { - "type": "array", - "items": { - "description": "Certificate details", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - }, - "v1MachineCertificates": { - "description": "K8 Certificates for all the cluster's control plane nodes", - "type": "object", - "properties": { - "machineCertificates": { - "type": "array", - "items": { - "description": "K8 Certificates for control plane nodes", - "type": "object", - "properties": { - "certificateAuthorities": { - "description": "Applicable certificate authorities", - "type": "array", - "items": { - "description": "Certificate Authority", - "type": "object", - "properties": { - "certificates": { - "type": "array", - "items": { - "description": "Certificate details", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "v1MachineHealth": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "v1MachineHealthCheckConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "v1MachineHealthCondition": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1MachineMaintenance": { - "type": "object", - "properties": { - "action": { - "description": "Machine maintenance mode action", - "type": "string", - "enum": [ - "cordon", - "uncordon" - ] - } - } - }, - "v1MachineMaintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1MachineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "v1MachinePoolConfigEntity": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1MachinePoolMeta": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "healthy": { - "description": "number of healthy machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "infraProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "maintenanceMode": { - "description": "number of machines under maintenance", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - }, - "v1MachinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "v1MachinePoolRate": { - "description": "Machine pool estimated rate information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nodesCount": { - "type": "integer", - "format": "int32" - }, - "rate": { - "description": "Cloud estimated rate information", - "type": "object", - "properties": { - "compute": { - "description": "Compute estimated rate information", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "type": { - "type": "string" - } - } - }, - "storage": { - "type": "array", - "items": { - "description": "Storage estimated rate information", - "type": "object", - "properties": { - "iops": { - "type": "number", - "format": "float64" - }, - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "sizeGB": { - "type": "number", - "format": "float64" - }, - "throughput": { - "type": "number", - "format": "float64" - }, - "type": { - "type": "string" - } - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1MachinePoolsMachineUids": { - "properties": { - "machinePools": { - "type": "object", - "additionalProperties": { - "properties": { - "machineUids": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1MachineUids": { - "properties": { - "machineUids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1Macro": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "v1Macros": { - "properties": { - "macros": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - }, - "v1ManagedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "v1Manifest": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "properties": { - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - }, - "v1ManifestData": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - }, - "v1ManifestEntities": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Manifests array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "type": "object", - "properties": { - "draft": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - }, - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1ManifestEntity": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "type": "object", - "properties": { - "draft": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - }, - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - }, - "v1ManifestInputEntity": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - }, - "v1ManifestPublishedSpec": { - "description": "Manifest spec", - "properties": { - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - }, - "v1ManifestRefInputEntities": { - "description": "Pack manifests input params", - "properties": { - "manifests": { - "description": "Pack manifests array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - } - } - }, - "v1ManifestRefInputEntity": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - }, - "v1ManifestRefUpdateEntity": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - }, - "v1ManifestSpec": { - "description": "Manifest spec", - "type": "object", - "properties": { - "draft": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - }, - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - }, - "v1ManifestSummary": { - "description": "Manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - }, - "v1Memory": { - "type": "object", - "properties": { - "sizeInMB": { - "description": "memory size in bytes", - "type": "integer", - "format": "int64" - } - } - }, - "v1MetricAggregation": { - "description": "Aggregation values", - "type": "object", - "properties": { - "avg": { - "type": "number", - "x-omitempty": false - }, - "count": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "max": { - "type": "number", - "x-omitempty": false - }, - "min": { - "type": "number", - "x-omitempty": false - }, - "sum": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1MetricMetadata": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1MetricPoint": { - "description": "Metric Info", - "type": "object", - "properties": { - "avg": { - "type": "number" - }, - "count": { - "type": "number", - "format": "int64" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "sum": { - "type": "number" - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "value": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1MetricTimeSeries": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "aggregation": { - "description": "Aggregation values", - "type": "object", - "properties": { - "avg": { - "type": "number", - "x-omitempty": false - }, - "count": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "max": { - "type": "number", - "x-omitempty": false - }, - "min": { - "type": "number", - "x-omitempty": false - }, - "sum": { - "type": "number", - "x-omitempty": false - } - } - }, - "kind": { - "type": "string" - }, - "points": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Metric Info", - "type": "object", - "properties": { - "avg": { - "type": "number" - }, - "count": { - "type": "number", - "format": "int64" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "sum": { - "type": "number" - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "value": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "unit": { - "type": "string" - } - } - } - } - } - }, - "v1MetricTimeSeriesList": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "metrics": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "aggregation": { - "description": "Aggregation values", - "type": "object", - "properties": { - "avg": { - "type": "number", - "x-omitempty": false - }, - "count": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "max": { - "type": "number", - "x-omitempty": false - }, - "min": { - "type": "number", - "x-omitempty": false - }, - "sum": { - "type": "number", - "x-omitempty": false - } - } - }, - "kind": { - "type": "string" - }, - "points": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Metric Info", - "type": "object", - "properties": { - "avg": { - "type": "number" - }, - "count": { - "type": "number", - "format": "int64" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "sum": { - "type": "number" - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "value": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "unit": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1Metrics": { - "type": "object", - "properties": { - "aggregation": { - "description": "Aggregation values", - "type": "object", - "properties": { - "avg": { - "type": "number", - "x-omitempty": false - }, - "count": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "max": { - "type": "number", - "x-omitempty": false - }, - "min": { - "type": "number", - "x-omitempty": false - }, - "sum": { - "type": "number", - "x-omitempty": false - } - } - }, - "kind": { - "type": "string" - }, - "points": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Metric Info", - "type": "object", - "properties": { - "avg": { - "type": "number" - }, - "count": { - "type": "number", - "format": "int64" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "sum": { - "type": "number" - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "value": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "unit": { - "type": "string" - } - } - }, - "v1MetricsList": { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "metrics": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "aggregation": { - "description": "Aggregation values", - "type": "object", - "properties": { - "avg": { - "type": "number", - "x-omitempty": false - }, - "count": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "max": { - "type": "number", - "x-omitempty": false - }, - "min": { - "type": "number", - "x-omitempty": false - }, - "sum": { - "type": "number", - "x-omitempty": false - } - } - }, - "kind": { - "type": "string" - }, - "points": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Metric Info", - "type": "object", - "properties": { - "avg": { - "type": "number" - }, - "count": { - "type": "number", - "format": "int64" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "sum": { - "type": "number" - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "value": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "unit": { - "type": "string" - } - } - } - } - } - }, - "v1MfaAuthenticationExtensions": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "v1MfaAuthenticatorSelection": { - "type": "object", - "properties": { - "authenticatorAttachment": { - "type": "string" - }, - "requireResidentKey": { - "type": "boolean" - }, - "residentKey": { - "type": "string" - }, - "userVerification": { - "type": "string" - } - } - }, - "v1MfaConveyancePreference": { - "type": "string", - "enum": [ - "none", - "indirect", - "direct", - "enterprise" - ] - }, - "v1MfaCredentialCreationRequest": { - "type": "object", - "properties": { - "_type": { - "type": "string" - }, - "authenticatorAttachment": { - "type": "string" - }, - "clientExtensionResults": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "deviceName": { - "type": "string" - }, - "id": { - "type": "string" - }, - "rawId": { - "type": "string", - "format": "url-encoded-base64" - }, - "response": { - "type": "object", - "properties": { - "attestationObject": { - "type": "string", - "format": "url-encoded-base64" - }, - "clientDataJSON": { - "type": "string", - "format": "url-encoded-base64" - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1MfaCredentialDescriptor": { - "type": "object", - "properties": { - "attestationType": { - "type": "string" - }, - "id": { - "type": "string", - "format": "url-encoded-base64" - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string" - } - } - }, - "v1MfaCredentialParameter": { - "type": "object", - "properties": { - "alg": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - }, - "v1MfaDeviceMeta": { - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deviceName": { - "type": "string" - } - } - }, - "v1MfaDeviceName": { - "type": "object", - "properties": { - "deviceName": { - "type": "string" - } - } - }, - "v1MfaDevices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deviceName": { - "type": "string" - } - } - } - }, - "v1MfaLoginStart": { - "type": "object", - "properties": { - "publicKey": { - "type": "object", - "properties": { - "allowCredentials": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attestationType": { - "type": "string" - }, - "id": { - "type": "string", - "format": "url-encoded-base64" - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string" - } - } - } - }, - "challenge": { - "type": "string", - "format": "url-encoded-base64" - }, - "extensions": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "rpId": { - "type": "string" - }, - "timeout": { - "type": "integer" - }, - "userVerification": { - "type": "string" - } - } - } - } - }, - "v1MfaPublicKeyCredentialCreationOptions": { - "type": "object", - "properties": { - "attestation": { - "type": "string", - "enum": [ - "none", - "indirect", - "direct", - "enterprise" - ] - }, - "authenticatorSelection": { - "type": "object", - "properties": { - "authenticatorAttachment": { - "type": "string" - }, - "requireResidentKey": { - "type": "boolean" - }, - "residentKey": { - "type": "string" - }, - "userVerification": { - "type": "string" - } - } - }, - "challenge": { - "type": "string", - "format": "url-encoded-base64" - }, - "excludeCredentials": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attestationType": { - "type": "string" - }, - "id": { - "type": "string", - "format": "url-encoded-base64" - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string" - } - } - } - }, - "extensions": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "pubKeyCredParams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alg": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - } - }, - "rp": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "timeout": { - "type": "integer" - }, - "user": { - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "id": { - "type": "object" - }, - "name": { - "type": "string" - } - } - } - } - }, - "v1MfaPublicKeyCredentialRequestOptions": { - "type": "object", - "properties": { - "allowCredentials": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attestationType": { - "type": "string" - }, - "id": { - "type": "string", - "format": "url-encoded-base64" - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string" - } - } - } - }, - "challenge": { - "type": "string", - "format": "url-encoded-base64" - }, - "extensions": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "rpId": { - "type": "string" - }, - "timeout": { - "type": "integer" - }, - "userVerification": { - "type": "string" - } - } - }, - "v1MfaRegistrationStart": { - "type": "object", - "properties": { - "publicKey": { - "type": "object", - "properties": { - "attestation": { - "type": "string", - "enum": [ - "none", - "indirect", - "direct", - "enterprise" - ] - }, - "authenticatorSelection": { - "type": "object", - "properties": { - "authenticatorAttachment": { - "type": "string" - }, - "requireResidentKey": { - "type": "boolean" - }, - "residentKey": { - "type": "string" - }, - "userVerification": { - "type": "string" - } - } - }, - "challenge": { - "type": "string", - "format": "url-encoded-base64" - }, - "excludeCredentials": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attestationType": { - "type": "string" - }, - "id": { - "type": "string", - "format": "url-encoded-base64" - }, - "transports": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string" - } - } - } - }, - "extensions": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "pubKeyCredParams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alg": { - "type": "integer" - }, - "type": { - "type": "string" - } - } - } - }, - "rp": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "timeout": { - "type": "integer" - }, - "user": { - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "id": { - "type": "object" - }, - "name": { - "type": "string" - } - } - } - } - } - } - }, - "v1MfaRelyingPartyEntity": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1MfaUserEntity": { - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "id": { - "type": "object" - }, - "name": { - "type": "string" - } - } - }, - "v1MgmtApp": { - "description": "Spectro application management data", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "spectro application management specifications", - "properties": { - "appEnv": { - "type": "string" - }, - "cloudType": { - "type": "string" - }, - "installedVersion": { - "type": "string" - }, - "latestVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "status": { - "description": "spectro application management status", - "properties": { - "appVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management app version information", - "properties": { - "intermediateVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - }, - "latestVerson": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "isFailed": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "messageLogs": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - }, - "upgradeHistory": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro management upgrade logs", - "properties": { - "upgradeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1MgmtAppContainersState": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - }, - "v1MgmtAppContainersStatus": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - }, - "v1MgmtAppCronJobStatus": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSuccessfulRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "v1MgmtAppEnvHealthStatus": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "namespaces": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "cronJobs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSuccessfulRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - }, - "deployments": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "availableReplicas": { - "type": "integer" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "desiredReplicaCount": { - "type": "integer" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "statefulSets": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "availableReplicas": { - "type": "integer" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "desiredReplicaCount": { - "type": "integer" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - } - } - } - }, - "v1MgmtAppHealth": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean" - }, - "podHealth": { - "type": "array", - "items": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean" - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "v1MgmtAppNameSpaceStatus": { - "type": "object", - "properties": { - "cronJobs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSuccessfulRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - }, - "deployments": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "availableReplicas": { - "type": "integer" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "desiredReplicaCount": { - "type": "integer" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "statefulSets": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "availableReplicas": { - "type": "integer" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "desiredReplicaCount": { - "type": "integer" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - }, - "v1MgmtAppObjectStatus": { - "type": "object", - "properties": { - "availableReplicas": { - "type": "integer" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "desiredReplicaCount": { - "type": "integer" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "pods": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "v1MgmtAppPodsStatus": { - "type": "object", - "properties": { - "containers": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "numberOfRestarts": { - "type": "integer" - }, - "state": { - "type": "object", - "properties": { - "running": { - "type": "object", - "properties": { - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "terminated": { - "type": "object", - "properties": { - "exitCode": { - "type": "integer" - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "signal": { - "type": "integer" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "waiting": { - "type": "object", - "properties": { - "reason": { - "type": "string" - } - } - } - } - } - } - } - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "messages": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "phase": { - "type": "string" - }, - "pvcs": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "reason": { - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1MgmtAppPvcStatus": { - "type": "object", - "properties": { - "claimName": { - "type": "string" - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1MgmtAppSpec": { - "description": "spectro application management specifications", - "properties": { - "appEnv": { - "type": "string" - }, - "cloudType": { - "type": "string" - }, - "installedVersion": { - "type": "string" - }, - "latestVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "v1MgmtAppStatus": { - "description": "spectro application management status", - "properties": { - "appVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management app version information", - "properties": { - "intermediateVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - }, - "latestVerson": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "isFailed": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "messageLogs": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - }, - "upgradeHistory": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro management upgrade logs", - "properties": { - "upgradeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1MgmtAppUpgrade": { - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "currentVersion": { - "type": "string", - "x-omitempty": false - }, - "previousVersion": { - "type": "string", - "x-omitempty": false - }, - "toBeUpgradedVersion": { - "type": "string", - "x-omitempty": false - } - } - }, - "status": { - "type": "object", - "properties": { - "action": { - "type": "string", - "x-omitempty": false - }, - "states": { - "type": "object", - "properties": { - "imageUpdate": { - "type": "object", - "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - }, - "startTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "spectroClusterUpdate": { - "type": "object", - "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - }, - "startTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "spectroServiceResume": { - "type": "object", - "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - }, - "startTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "spectroVersionConfigMapUpdate": { - "type": "object", - "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - }, - "startTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "spectroVersionServiceSuspend": { - "type": "object", - "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - }, - "startTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "upgradeStatus": { - "type": "string", - "x-omitempty": false - }, - "versionHistory": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - } - }, - "v1MgmtAppVersion": { - "description": "spectro application management version", - "properties": { - "version": { - "type": "object", - "properties": { - "appEnv": { - "type": "string" - }, - "cloudType": { - "type": "string" - }, - "installedVersion": { - "type": "string" - }, - "latestVersion": { - "type": "string" - } - } - } - } - }, - "v1MgmtBackupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "v1MgmtDbCollectionIndexInfo": { - "description": "Database info", - "type": "object", - "properties": { - "key": { - "additionalProperties": { - "type": "integer" - } - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "version": { - "type": "string" - } - } - }, - "v1MgmtDbCollectionInfo": { - "description": "Database info", - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "indexes": { - "type": "array", - "items": { - "description": "Database info", - "type": "object", - "properties": { - "key": { - "additionalProperties": { - "type": "integer" - } - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "version": { - "type": "string" - } - } - } - }, - "isCapped": { - "type": "boolean" - }, - "isReadOnly": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "storageSize": { - "type": "integer" - }, - "totalIndexSize": { - "type": "integer" - } - } - }, - "v1MgmtDbHealth": { - "type": "object", - "properties": { - "databases": { - "type": "array", - "items": { - "description": "Database info", - "type": "object", - "properties": { - "collections": { - "type": "array", - "items": { - "description": "Database info", - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "indexes": { - "type": "array", - "items": { - "description": "Database info", - "type": "object", - "properties": { - "key": { - "additionalProperties": { - "type": "integer" - } - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "version": { - "type": "string" - } - } - } - }, - "isCapped": { - "type": "boolean" - }, - "isReadOnly": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "storageSize": { - "type": "integer" - }, - "totalIndexSize": { - "type": "integer" - } - } - } - }, - "isEmpty": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "totalIndexSize": { - "type": "integer" - } - } - } - }, - "totalIndexSize": { - "type": "integer" - }, - "totalSize": { - "type": "integer" - } - } - }, - "v1MgmtDbInfo": { - "description": "Database info", - "type": "object", - "properties": { - "collections": { - "type": "array", - "items": { - "description": "Database info", - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "indexes": { - "type": "array", - "items": { - "description": "Database info", - "type": "object", - "properties": { - "key": { - "additionalProperties": { - "type": "integer" - } - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "version": { - "type": "string" - } - } - } - }, - "isCapped": { - "type": "boolean" - }, - "isReadOnly": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "storageSize": { - "type": "integer" - }, - "totalIndexSize": { - "type": "integer" - } - } - } - }, - "isEmpty": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "totalIndexSize": { - "type": "integer" - } - } - }, - "v1MgmtDeleteBackupFtpEntity": { - "description": "delete backups based on retention period", - "type": "object", - "properties": { - "fileTransferConfig": { - "description": "file transfer details", - "type": "object", - "properties": { - "backupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "ftp": { - "description": "ftp config", - "type": "object", - "properties": { - "directory": { - "type": "string" - }, - "password": { - "type": "string" - }, - "server": { - "type": "string" - }, - "username": { - "type": "string" - } - } - } - } - }, - "retentionPeriod": { - "type": "integer" - } - } - }, - "v1MgmtDeleteBackupS3Entity": { - "description": "delete backups based on retention period", - "type": "object", - "properties": { - "fileTransferConfig": { - "description": "file transfer details", - "type": "object", - "properties": { - "backupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "s3": { - "description": "s3 config", - "type": "object", - "properties": { - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "directory": { - "type": "string" - }, - "region": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - } - } - }, - "retentionPeriod": { - "type": "integer" - } - } - }, - "v1MgmtErrLog": { - "type": "object", - "properties": { - "ref": { - "type": "string" - }, - "spec": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string" - } - }, - "data": { - "type": "string" - }, - "debug": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "errCode": { - "type": "string" - }, - "errMsg": { - "type": "string" - }, - "stackTraces": { - "type": "array", - "items": { - "type": "string" - } - }, - "userCtx": { - "type": "object", - "properties": { - "projectUid": { - "type": "string" - }, - "serviceResUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "userUid": { - "type": "string" - } - } - } - } - } - } - }, - "v1MgmtErrLogs": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "ref": { - "type": "string" - }, - "spec": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string" - } - }, - "data": { - "type": "string" - }, - "debug": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "errCode": { - "type": "string" - }, - "errMsg": { - "type": "string" - }, - "stackTraces": { - "type": "array", - "items": { - "type": "string" - } - }, - "userCtx": { - "type": "object", - "properties": { - "projectUid": { - "type": "string" - }, - "serviceResUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "userUid": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1MgmtErrSpec": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string" - } - }, - "data": { - "type": "string" - }, - "debug": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "errCode": { - "type": "string" - }, - "errMsg": { - "type": "string" - }, - "stackTraces": { - "type": "array", - "items": { - "type": "string" - } - }, - "userCtx": { - "type": "object", - "properties": { - "projectUid": { - "type": "string" - }, - "serviceResUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "userUid": { - "type": "string" - } - } - } - } - }, - "v1MgmtFileTransferFtpEntity": { - "description": "file transfer details", - "type": "object", - "properties": { - "backupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "ftp": { - "description": "ftp config", - "type": "object", - "properties": { - "directory": { - "type": "string" - }, - "password": { - "type": "string" - }, - "server": { - "type": "string" - }, - "username": { - "type": "string" - } - } - } - } - }, - "v1MgmtFileTransferS3Entity": { - "description": "file transfer details", - "type": "object", - "properties": { - "backupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "s3": { - "description": "s3 config", - "type": "object", - "properties": { - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "directory": { - "type": "string" - }, - "region": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - } - } - }, - "v1MgmtFtpConfig": { - "description": "ftp config", - "type": "object", - "properties": { - "directory": { - "type": "string" - }, - "password": { - "type": "string" - }, - "server": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "v1MgmtHash": { - "type": "object", - "required": [ - "hash" - ], - "properties": { - "hash": { - "type": "string" - } - } - }, - "v1MgmtListBackupFtpEntity": { - "description": "list ftp backups", - "type": "object", - "properties": { - "fileTransferConfig": { - "description": "file transfer details", - "type": "object", - "properties": { - "backupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "ftp": { - "description": "ftp config", - "type": "object", - "properties": { - "directory": { - "type": "string" - }, - "password": { - "type": "string" - }, - "server": { - "type": "string" - }, - "username": { - "type": "string" - } - } - } - } - } - } - }, - "v1MgmtListBackupS3Entity": { - "description": "list s3 backups", - "type": "object", - "properties": { - "fileTransferConfig": { - "description": "file transfer details", - "type": "object", - "properties": { - "backupSpec": { - "description": "backup spec", - "type": "object", - "properties": { - "backupUid": { - "type": "string" - }, - "mode": { - "type": "string" - }, - "modeUid": { - "type": "string" - }, - "proxy": { - "description": "proxy information if applicable", - "type": "string" - }, - "scheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "scheduleType": { - "type": "string", - "default": "Automated", - "enum": [ - "OnDemand", - "Automated" - ] - } - } - }, - "s3": { - "description": "s3 config", - "type": "object", - "properties": { - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "directory": { - "type": "string" - }, - "region": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - } - } - } - } - }, - "v1MgmtMigrateEntity": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "db": { - "type": "string" - }, - "host": { - "type": "string" - }, - "isServiceRecord": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "port": { - "type": "integer" - }, - "uri": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "v1MgmtMigrationStatuses": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1MgmtMsgBrokerReinitStatus": { - "type": "object", - "properties": { - "failures": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "isSuccess": { - "type": "boolean" - }, - "message": { - "type": "string" - } - } - } - }, - "success": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "isSuccess": { - "type": "boolean" - }, - "message": { - "type": "string" - } - } - } - } - } - }, - "v1MgmtMsgBrokerReinitStatusEntity": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "isSuccess": { - "type": "boolean" - }, - "message": { - "type": "string" - } - } - }, - "v1MgmtPodHealth": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean" - }, - "name": { - "type": "string" - } - } - }, - "v1MgmtS3Config": { - "description": "s3 config", - "type": "object", - "properties": { - "accessKey": { - "type": "string" - }, - "bucket": { - "type": "string" - }, - "directory": { - "type": "string" - }, - "region": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - }, - "v1MgmtUpgradeState": { - "type": "object", - "properties": { - "description": { - "type": "string", - "x-omitempty": false - }, - "details": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string", - "x-omitempty": false - }, - "startTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1MonthlyUsage": { - "description": "Monthly usage object", - "properties": { - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tenantUsages": { - "description": "List of tenants usage", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Tenant usage object", - "properties": { - "orgName": { - "description": "Organization name", - "type": "string" - }, - "tenantUid": { - "description": "Tenant uid", - "type": "string" - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - } - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - }, - "v1MsgBrokerConnection": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1MsgBrokerConnectionList": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "v1MsgBrokerConnections": { - "type": "object", - "properties": { - "connections": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "limit": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "numOfConnections": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "totalConnections": { - "type": "integer" - } - } - }, - "v1MsgBrokerHealth": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "connections": { - "type": "object", - "properties": { - "connections": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "limit": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "numOfConnections": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "totalConnections": { - "type": "integer" - } - } - }, - "nodeId": { - "type": "string" - }, - "routes": { - "type": "object", - "properties": { - "numRoutes": { - "type": "integer" - }, - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "didSolicit": { - "type": "boolean" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "isConfigured": { - "type": "boolean" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingSize": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "remoteId": { - "type": "string" - }, - "rid": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "subscriptions": { - "type": "integer" - } - } - } - }, - "serverId": { - "type": "string" - } - } - }, - "variables": { - "type": "object", - "properties": { - "authRequired": { - "type": "boolean" - }, - "authTimeout": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "configLoadTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "connectUrls": { - "type": "array", - "items": { - "type": "string" - } - }, - "connections": { - "type": "integer" - }, - "cores": { - "type": "integer" - }, - "cpu": { - "type": "number" - }, - "gitCommit": { - "type": "string" - }, - "go": { - "type": "string" - }, - "gomaxprocs": { - "type": "integer" - }, - "host": { - "type": "string" - }, - "httpHost": { - "type": "string" - }, - "httpPort": { - "type": "integer" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "leafNodes": { - "type": "integer" - }, - "maxConnections": { - "type": "integer" - }, - "maxControlLine": { - "type": "integer" - }, - "maxPayload": { - "type": "integer" - }, - "maxPending": { - "type": "integer" - }, - "mem": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pingInterval": { - "type": "integer" - }, - "pingMax": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "proto": { - "type": "integer" - }, - "remotes": { - "type": "integer" - }, - "routes": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "serverName": { - "type": "string" - }, - "slowConsumers": { - "type": "integer" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptions": { - "type": "integer" - }, - "tlsRequired": { - "type": "boolean" - }, - "tlsTimeout": { - "type": "integer" - }, - "totalConnections": { - "type": "integer" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - }, - "writeDeadline": { - "type": "integer" - } - } - } - } - } - } - } - }, - "status": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "allyPublishersByTenant": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "duplicateSubscribersCount": { - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "hubbleSubscribersByService": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "hubbleSubscribersByTenant": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "hubbleSubscribersByType": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "nodeId": { - "type": "string" - }, - "subscriberWithAbnormalRTT": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "subscribersWithAbnormalSubscriptions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "uniqueSubscribers": { - "type": "integer" - }, - "unrecognizedClients": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1MsgBrokerNodeHealth": { - "type": "object", - "properties": { - "allyPublishersByTenant": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "duplicateSubscribersCount": { - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "hubbleSubscribersByService": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "hubbleSubscribersByTenant": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "hubbleSubscribersByType": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "nodeId": { - "type": "string" - }, - "subscriberWithAbnormalRTT": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "subscribersWithAbnormalSubscriptions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "uniqueSubscribers": { - "type": "integer" - }, - "unrecognizedClients": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1MsgBrokerNodeHealthSpec": { - "type": "object", - "properties": { - "connections": { - "type": "object", - "properties": { - "connections": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "limit": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "numOfConnections": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "totalConnections": { - "type": "integer" - } - } - }, - "nodeId": { - "type": "string" - }, - "routes": { - "type": "object", - "properties": { - "numRoutes": { - "type": "integer" - }, - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "didSolicit": { - "type": "boolean" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "isConfigured": { - "type": "boolean" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingSize": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "remoteId": { - "type": "string" - }, - "rid": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "subscriptions": { - "type": "integer" - } - } - } - }, - "serverId": { - "type": "string" - } - } - }, - "variables": { - "type": "object", - "properties": { - "authRequired": { - "type": "boolean" - }, - "authTimeout": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "configLoadTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "connectUrls": { - "type": "array", - "items": { - "type": "string" - } - }, - "connections": { - "type": "integer" - }, - "cores": { - "type": "integer" - }, - "cpu": { - "type": "number" - }, - "gitCommit": { - "type": "string" - }, - "go": { - "type": "string" - }, - "gomaxprocs": { - "type": "integer" - }, - "host": { - "type": "string" - }, - "httpHost": { - "type": "string" - }, - "httpPort": { - "type": "integer" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "leafNodes": { - "type": "integer" - }, - "maxConnections": { - "type": "integer" - }, - "maxControlLine": { - "type": "integer" - }, - "maxPayload": { - "type": "integer" - }, - "maxPending": { - "type": "integer" - }, - "mem": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pingInterval": { - "type": "integer" - }, - "pingMax": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "proto": { - "type": "integer" - }, - "remotes": { - "type": "integer" - }, - "routes": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "serverName": { - "type": "string" - }, - "slowConsumers": { - "type": "integer" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptions": { - "type": "integer" - }, - "tlsRequired": { - "type": "boolean" - }, - "tlsTimeout": { - "type": "integer" - }, - "totalConnections": { - "type": "integer" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - }, - "writeDeadline": { - "type": "integer" - } - } - } - } - }, - "v1MsgBrokerNodesHealthSpec": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "connections": { - "type": "object", - "properties": { - "connections": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "limit": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "numOfConnections": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "totalConnections": { - "type": "integer" - } - } - }, - "nodeId": { - "type": "string" - }, - "routes": { - "type": "object", - "properties": { - "numRoutes": { - "type": "integer" - }, - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "didSolicit": { - "type": "boolean" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "isConfigured": { - "type": "boolean" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingSize": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "remoteId": { - "type": "string" - }, - "rid": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "subscriptions": { - "type": "integer" - } - } - } - }, - "serverId": { - "type": "string" - } - } - }, - "variables": { - "type": "object", - "properties": { - "authRequired": { - "type": "boolean" - }, - "authTimeout": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "configLoadTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "connectUrls": { - "type": "array", - "items": { - "type": "string" - } - }, - "connections": { - "type": "integer" - }, - "cores": { - "type": "integer" - }, - "cpu": { - "type": "number" - }, - "gitCommit": { - "type": "string" - }, - "go": { - "type": "string" - }, - "gomaxprocs": { - "type": "integer" - }, - "host": { - "type": "string" - }, - "httpHost": { - "type": "string" - }, - "httpPort": { - "type": "integer" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "leafNodes": { - "type": "integer" - }, - "maxConnections": { - "type": "integer" - }, - "maxControlLine": { - "type": "integer" - }, - "maxPayload": { - "type": "integer" - }, - "maxPending": { - "type": "integer" - }, - "mem": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pingInterval": { - "type": "integer" - }, - "pingMax": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "proto": { - "type": "integer" - }, - "remotes": { - "type": "integer" - }, - "routes": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "serverName": { - "type": "string" - }, - "slowConsumers": { - "type": "integer" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptions": { - "type": "integer" - }, - "tlsRequired": { - "type": "boolean" - }, - "tlsTimeout": { - "type": "integer" - }, - "totalConnections": { - "type": "integer" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - }, - "writeDeadline": { - "type": "integer" - } - } - } - } - } - } - } - }, - "v1MsgBrokerNodesHealthStatus": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "allyPublishersByTenant": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "duplicateSubscribersCount": { - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "hubbleSubscribersByService": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "hubbleSubscribersByTenant": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "hubbleSubscribersByType": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "nodeId": { - "type": "string" - }, - "subscriberWithAbnormalRTT": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "subscribersWithAbnormalSubscriptions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "uniqueSubscribers": { - "type": "integer" - }, - "unrecognizedClients": { - "type": "array", - "items": { - "type": "object", - "properties": { - "account": { - "type": "string" - }, - "accountUid": { - "type": "string" - }, - "cid": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cpu": { - "type": "number" - }, - "duplicationCount": { - "type": "integer" - }, - "iP": { - "type": "string" - }, - "idle": { - "type": "string" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "lang": { - "type": "string" - }, - "lastActivity": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingBytes": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptionList": { - "type": "array", - "items": { - "type": "string" - } - }, - "subscriptions": { - "type": "integer" - }, - "tLSCipherSuite": { - "type": "string" - }, - "tLSVersion": { - "type": "string" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1MsgBrokerRoutes": { - "type": "object", - "properties": { - "numRoutes": { - "type": "integer" - }, - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "didSolicit": { - "type": "boolean" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "isConfigured": { - "type": "boolean" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingSize": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "remoteId": { - "type": "string" - }, - "rid": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "subscriptions": { - "type": "integer" - } - } - } - }, - "serverId": { - "type": "string" - } - } - }, - "v1MsgBrokerVariables": { - "type": "object", - "properties": { - "authRequired": { - "type": "boolean" - }, - "authTimeout": { - "type": "integer" - }, - "cluster": { - "type": "object", - "properties": { - "addr": { - "type": "string" - }, - "authTimeout": { - "type": "integer" - }, - "clusterPort": { - "type": "integer" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "configLoadTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "connectUrls": { - "type": "array", - "items": { - "type": "string" - } - }, - "connections": { - "type": "integer" - }, - "cores": { - "type": "integer" - }, - "cpu": { - "type": "number" - }, - "gitCommit": { - "type": "string" - }, - "go": { - "type": "string" - }, - "gomaxprocs": { - "type": "integer" - }, - "host": { - "type": "string" - }, - "httpHost": { - "type": "string" - }, - "httpPort": { - "type": "integer" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "leafNodes": { - "type": "integer" - }, - "maxConnections": { - "type": "integer" - }, - "maxControlLine": { - "type": "integer" - }, - "maxPayload": { - "type": "integer" - }, - "maxPending": { - "type": "integer" - }, - "mem": { - "type": "integer" - }, - "now": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pingInterval": { - "type": "integer" - }, - "pingMax": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "proto": { - "type": "integer" - }, - "remotes": { - "type": "integer" - }, - "routes": { - "type": "integer" - }, - "serverId": { - "type": "string" - }, - "serverName": { - "type": "string" - }, - "slowConsumers": { - "type": "integer" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "subscriptions": { - "type": "integer" - }, - "tlsRequired": { - "type": "boolean" - }, - "tlsTimeout": { - "type": "integer" - }, - "totalConnections": { - "type": "integer" - }, - "uptime": { - "type": "string" - }, - "version": { - "type": "string" - }, - "writeDeadline": { - "type": "integer" - } - } - }, - "v1MsgSubscriber": { - "description": "Message subscriber request", - "type": "object", - "properties": { - "accountId": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "service": { - "type": "string" - }, - "userId": { - "type": "string" - } - } - }, - "v1Nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1NatsConfiguration": { - "description": "Describes the response that contains the nats configuration to establish credentials", - "type": "object", - "properties": { - "connectionString": { - "description": "Describes the preCalculated connection string, can be used directly to make connection", - "type": "string" - }, - "enableTls": { - "description": "Describes the NATs application option to use a TLS based custom dialer. Its enabled when external Certificate is used over the existing one.", - "type": "boolean" - }, - "insecureTls": { - "description": "Describes the NATs tls option to skip verifying the client certificate", - "type": "boolean" - }, - "password": { - "description": "Describes the NATs user's password", - "type": "string" - }, - "scheme": { - "description": "Describes the NATs protocol for the connection. Eg- 'tls', 'nats'", - "type": "string" - }, - "tlsCertificate": { - "description": "Describes the NATs tls certificate used for making a secure connection", - "type": "string" - }, - "tlsKey": { - "description": "Describes the NATs tls certificate key used for making a secure connection", - "type": "string" - }, - "urls": { - "description": "Describes the URLs of the nats nodes used in nats HA setup where the client will connect", - "type": "string" - }, - "userName": { - "description": "Describes the NATs user name", - "type": "string" - } - } - }, - "v1NatsCredentialRequest": { - "description": "Describes the request for resource's nats credential", - "type": "object", - "properties": { - "clusterUid": { - "description": "Deprecated. please use resourceUid", - "type": "string" - }, - "isSystem": { - "description": "Describes if its a system request", - "type": "boolean" - }, - "resourceUid": { - "description": "Describes the resource for which credentials has to be fetched", - "type": "string" - }, - "serviceName": { - "description": "Describes the service for which credentials has to be fetched. Possible values [ally, jet]", - "type": "string", - "enum": [ - "ally", - "jet" - ] - }, - "tenantUid": { - "description": "Describes the tenant of the resource", - "type": "string" - } - } - }, - "v1NatsCredentials": { - "description": "Describes the response that contains the nats credentials", - "type": "object", - "properties": { - "allowedPublisher": { - "description": "Describes the subject on which client is allowed to publish", - "type": "string" - }, - "allowedSubcriber": { - "description": "Describes the subject on which client is allowed to subscribe", - "type": "string" - }, - "jwt": { - "description": "Describes the jwt token which will be used as an credential for the nats", - "type": "string" - }, - "seed": { - "description": "Describes the seed for the jwt", - "type": "string" - } - } - }, - "v1NatsRoute": { - "type": "object", - "properties": { - "didSolicit": { - "type": "boolean" - }, - "inBytes": { - "type": "integer" - }, - "inMsgs": { - "type": "integer" - }, - "isConfigured": { - "type": "boolean" - }, - "outBytes": { - "type": "integer" - }, - "outMsgs": { - "type": "integer" - }, - "pendingSize": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "remoteId": { - "type": "string" - }, - "rid": { - "type": "integer" - }, - "rtt": { - "type": "string" - }, - "subscriptions": { - "type": "integer" - } - } - }, - "v1NestedCloudConfigStatus": { - "description": "Defines the status of virtual cloud config", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "type", - "x-kubernetes-patch-strategy": "merge" - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - } - } - }, - "v1Nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "v1NodesAutoRemediationSettings": { - "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1NonFipsConfig": { - "description": "Non-FIPS configuration", - "properties": { - "mode": { - "description": "enable or disable the non FIPS complaint", - "type": "string", - "default": "nonFipsDisabled", - "enum": [ - "nonFipsEnabled", - "nonFipsDisabled" - ] - } - } - }, - "v1Notification": { - "description": "Describes event notification and action definition", - "type": "object", - "properties": { - "action": { - "description": "Describes actions for the notification", - "type": "object", - "properties": { - "ack": { - "description": "Describes the acknowledgement status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "actionMessage": { - "description": "Describes information related to notification action", - "type": "string" - }, - "actionType": { - "description": "Describes action type for the notification. Possible Values [NotifyActionPacksUpdate, NotifyActionClusterProfileUpdate, NotifyActionPackRegistryUpdate, NotifyActionClusterUpdate, NotifyActionNone]", - "type": "string", - "enum": [ - "NotifyActionPacksUpdate", - "NotifyActionClusterProfileUpdate", - "NotifyActionPackRegistryUpdate", - "NotifyActionClusterUpdate", - "NotifyActionNone" - ] - }, - "events": { - "description": "Describes the events happened for the notifications", - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "isDone": { - "description": "Describes the \"Done\" status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "isInfo": { - "description": "Describes the notification as a information", - "type": "boolean", - "x-omitempty": false - }, - "link": { - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "source": { - "description": "Describes origin info for the notification", - "type": "object", - "properties": { - "component": { - "description": "Describes component where notification originated", - "type": "string" - } - } - }, - "type": { - "description": "Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]", - "type": "string", - "enum": [ - "NotificationPackUpdate", - "NotificationPackRegistryUpdate", - "NotificationNone" - ] - } - } - }, - "v1NotificationAction": { - "description": "Describes actions for the notification", - "type": "object", - "properties": { - "ack": { - "description": "Describes the acknowledgement status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "actionMessage": { - "description": "Describes information related to notification action", - "type": "string" - }, - "actionType": { - "description": "Describes action type for the notification. Possible Values [NotifyActionPacksUpdate, NotifyActionClusterProfileUpdate, NotifyActionPackRegistryUpdate, NotifyActionClusterUpdate, NotifyActionNone]", - "type": "string", - "enum": [ - "NotifyActionPacksUpdate", - "NotifyActionClusterProfileUpdate", - "NotifyActionPackRegistryUpdate", - "NotifyActionClusterUpdate", - "NotifyActionNone" - ] - }, - "events": { - "description": "Describes the events happened for the notifications", - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "isDone": { - "description": "Describes the \"Done\" status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "isInfo": { - "description": "Describes the notification as a information", - "type": "boolean", - "x-omitempty": false - }, - "link": { - "type": "string" - } - } - }, - "v1NotificationEvent": { - "description": "Describes notification event details", - "type": "object", - "properties": { - "component": { - "description": "Describes component of notification event", - "type": "string" - }, - "digest": { - "description": "Describes notification event digest", - "type": "string" - }, - "message": { - "description": "Describes a information for the notification event", - "type": "string" - }, - "meta": { - "description": "Describes a event messages with meta digest as the key", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "type": { - "description": "Describes notification event type", - "type": "string", - "enum": [ - "NotificationPackSync", - "NotificationClusterProfileSync" - ] - } - } - }, - "v1NotificationSource": { - "description": "Describes origin info for the notification", - "type": "object", - "properties": { - "component": { - "description": "Describes component where notification originated", - "type": "string" - } - } - }, - "v1Notifications": { - "description": "Describe a list of generated notifications", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Describe a list of generated notifications", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes event notification and action definition", - "type": "object", - "properties": { - "action": { - "description": "Describes actions for the notification", - "type": "object", - "properties": { - "ack": { - "description": "Describes the acknowledgement status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "actionMessage": { - "description": "Describes information related to notification action", - "type": "string" - }, - "actionType": { - "description": "Describes action type for the notification. Possible Values [NotifyActionPacksUpdate, NotifyActionClusterProfileUpdate, NotifyActionPackRegistryUpdate, NotifyActionClusterUpdate, NotifyActionNone]", - "type": "string", - "enum": [ - "NotifyActionPacksUpdate", - "NotifyActionClusterProfileUpdate", - "NotifyActionPackRegistryUpdate", - "NotifyActionClusterUpdate", - "NotifyActionNone" - ] - }, - "events": { - "description": "Describes the events happened for the notifications", - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "isDone": { - "description": "Describes the \"Done\" status for the notification", - "type": "boolean", - "x-omitempty": false - }, - "isInfo": { - "description": "Describes the notification as a information", - "type": "boolean", - "x-omitempty": false - }, - "link": { - "type": "string" - } - } - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "source": { - "description": "Describes origin info for the notification", - "type": "object", - "properties": { - "component": { - "description": "Describes component where notification originated", - "type": "string" - } - } - }, - "type": { - "description": "Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]", - "type": "string", - "enum": [ - "NotificationPackUpdate", - "NotificationPackRegistryUpdate", - "NotificationNone" - ] - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1OS": { - "type": "object", - "properties": { - "family": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ObjectEntity": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ObjectMeta": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "v1ObjectMetaInputEntity": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "v1ObjectMetaInputEntitySchema": { - "description": "Resource metadata", - "type": "object", - "required": [ - "metadata" - ], - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1ObjectMetaUpdateEntity": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ObjectReference": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "v1ObjectResReference": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ObjectScopeEntity": { - "description": "Object scope identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ObjectTagsEntity": { - "description": "Object identity meta with tags", - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1OciImageRegistry": { - "description": "Oci Image Registry", - "type": "object", - "properties": { - "baseContentPath": { - "description": "baseContentPath is the root path for the registry content", - "type": "string" - }, - "caCert": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "mirrorRegistries": { - "description": "mirrorRegistries contains the array of image sources like gcr.io, ghcr.io, docker.io", - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "v1OciRegistries": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Oci registry information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Image registry spec", - "type": "object", - "properties": { - "defaultRegion": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "providerType": { - "type": "string" - }, - "registryType": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "OCI registry status summary", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1OciRegistry": { - "description": "Oci registry information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Image registry spec", - "type": "object", - "properties": { - "defaultRegion": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "providerType": { - "type": "string" - }, - "registryType": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "OCI registry status summary", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "v1OciRegistryAuth": { - "description": "Auth credentials of the oci registry", - "type": "object", - "properties": { - "password": { - "description": "Password in the credentials", - "type": "string", - "format": "password" - }, - "username": { - "description": "Username in the credentials", - "type": "string" - } - } - }, - "v1OciRegistryEntity": { - "description": "Oci registry credentials", - "type": "object", - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "defaultRegion": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "providerType": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1OciRegistrySpec": { - "description": "Image registry spec", - "type": "object", - "properties": { - "defaultRegion": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "isPrivate": { - "type": "boolean" - }, - "providerType": { - "type": "string" - }, - "registryType": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1OciRegistryStatusSummary": { - "description": "OCI registry status summary", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - }, - "v1OidcAuth": { - "type": "object", - "properties": { - "oidcToken": { - "type": "string" - }, - "org": { - "type": "string" - } - } - }, - "v1OidcAuthLogin": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "password": { - "type": "string", - "format": "password" - } - } - }, - "v1OidcAuthorizationTokenResponse": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "error": { - "type": "string" - }, - "error_description": { - "type": "string" - }, - "expires_in": { - "type": "integer" - }, - "id_token": { - "type": "string" - }, - "raw": { - "type": "object" - }, - "refresh_token": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1OidcIssuerTls": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "v1OidcLogins": { - "description": "loginsDetails", - "type": "object", - "properties": { - "systemLogins": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the allowed sso login details", - "type": "object", - "properties": { - "displayName": { - "description": "Describes the display name for the sso login", - "type": "string" - }, - "logo": { - "description": "Describes the url path for the sso login", - "type": "string" - }, - "name": { - "description": "Describes the processed name for the sso login", - "type": "string" - }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "type": "string" - } - } - } - }, - "tenantLogin": { - "type": "object", - "properties": { - "authType": { - "type": "string" - }, - "redirectUrl": { - "type": "string" - } - } - } - } - }, - "v1OidcRefreshToken": { - "description": "oidc request with token", - "type": "object", - "properties": { - "token": { - "type": "string" - } - } - }, - "v1OpenIDProviderMetadataResponse": { - "type": "object", - "properties": { - "authorization_endpoint": { - "description": "REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint", - "type": "string" - }, - "claims_supported": { - "description": "RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for", - "type": "string" - }, - "id_token_signing_alg_values_supported": { - "description": "REQUIRED. JSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for the ID Token to encode the Claims in a JWT", - "type": "object" - }, - "issuer": { - "description": "REQUIRED. URL using the https scheme with no query or fragment component that the OP asserts as its Issuer Identifier", - "type": "string" - }, - "jwks_uri": { - "description": "REQUIRED. URL of the OP's JSON Web Key Set [JWK] document.", - "type": "string" - }, - "registration_endpoint": { - "description": "RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint", - "type": "string" - }, - "response_types_supported": { - "description": "REQUIRED. JSON array containing a list of the OAuth 2.0 response_type values that this OP supports", - "type": "string" - }, - "scopes_supported": { - "description": "RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server supports", - "type": "string" - }, - "subject_types_supported": { - "description": "REQUIRED. JSON array containing a list of the Subject Identifier types that this OP supports", - "type": "string" - }, - "token_endpoint": { - "description": "URL of the OP's OAuth 2.0 Token Endpoint", - "type": "string" - }, - "userinfo_endpoint": { - "description": "RECOMMENDED. URL of the OP's UserInfo Endpoint", - "type": "string" - } - } - }, - "v1OpenStackAccount": { - "description": "OpenStack account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "auth-url,project,username,password,domain,cacert etc", - "type": "object", - "required": [ - "identityEndpoint", - "username", - "password" - ], - "properties": { - "caCert": { - "description": "Ca cert for OpenStack", - "type": "string" - }, - "defaultDomain": { - "description": "Default Domain name", - "type": "string" - }, - "defaultProject": { - "description": "Default Project name", - "type": "string" - }, - "identityEndpoint": { - "description": "Identity endpoint for OpenStack", - "type": "string" - }, - "insecure": { - "description": "For self signed certs in IdentityEndpoint", - "type": "boolean" - }, - "parentRegion": { - "description": "Parent region of OpenStack", - "type": "string" - }, - "password": { - "description": "Password of OpenStack account", - "type": "string" - }, - "username": { - "description": "Username of OpenStack account", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1OpenStackAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "auth-url,project,username,password,domain,cacert etc", - "type": "object", - "required": [ - "identityEndpoint", - "username", - "password" - ], - "properties": { - "caCert": { - "description": "Ca cert for OpenStack", - "type": "string" - }, - "defaultDomain": { - "description": "Default Domain name", - "type": "string" - }, - "defaultProject": { - "description": "Default Project name", - "type": "string" - }, - "identityEndpoint": { - "description": "Identity endpoint for OpenStack", - "type": "string" - }, - "insecure": { - "description": "For self signed certs in IdentityEndpoint", - "type": "boolean" - }, - "parentRegion": { - "description": "Parent region of OpenStack", - "type": "string" - }, - "password": { - "description": "Password of OpenStack account", - "type": "string" - }, - "username": { - "description": "Username of OpenStack account", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1OpenStackAz": { - "description": "OpenStack az entity", - "type": "object", - "properties": { - "name": { - "description": "Name of OpenStack az", - "type": "string" - } - } - }, - "v1OpenStackAzs": { - "description": "List of OpenStack azs", - "type": "object", - "required": [ - "azs" - ], - "properties": { - "azs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack az entity", - "type": "object", - "properties": { - "name": { - "description": "Name of OpenStack az", - "type": "string" - } - } - } - } - } - }, - "v1OpenStackCloudAccount": { - "description": "auth-url,project,username,password,domain,cacert etc", - "type": "object", - "required": [ - "identityEndpoint", - "username", - "password" - ], - "properties": { - "caCert": { - "description": "Ca cert for OpenStack", - "type": "string" - }, - "defaultDomain": { - "description": "Default Domain name", - "type": "string" - }, - "defaultProject": { - "description": "Default Project name", - "type": "string" - }, - "identityEndpoint": { - "description": "Identity endpoint for OpenStack", - "type": "string" - }, - "insecure": { - "description": "For self signed certs in IdentityEndpoint", - "type": "boolean" - }, - "parentRegion": { - "description": "Parent region of OpenStack", - "type": "string" - }, - "password": { - "description": "Password of OpenStack account", - "type": "string" - }, - "username": { - "description": "Username of OpenStack account", - "type": "string" - } - } - }, - "v1OpenStackCloudClusterConfigEntity": { - "description": "Openstack cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - } - } - }, - "v1OpenStackCloudConfig": { - "description": "OpenStackCloudConfig is the Schema for the OpenStackcloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "OpenStackCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "DiskGiB is used to configure rootVolume, the volume metadata to boot from", - "type": "integer", - "format": "int32" - }, - "flavor": { - "description": "Openstack flavor name, only return argument", - "type": "string" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "image": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "status": { - "description": "OpenStackCloudConfigStatus defines the observed state of OpenStackCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "nodeImage": { - "type": "string" - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "type": "boolean" - } - } - } - } - }, - "v1OpenStackCloudConfigSpec": { - "description": "OpenStackCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "DiskGiB is used to configure rootVolume, the volume metadata to boot from", - "type": "integer", - "format": "int32" - }, - "flavor": { - "description": "Openstack flavor name, only return argument", - "type": "string" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "image": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1OpenStackCloudConfigStatus": { - "description": "OpenStackCloudConfigStatus defines the observed state of OpenStackCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "nodeImage": { - "type": "string" - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "useCapiImage": { - "type": "boolean" - } - } - }, - "v1OpenStackClusterConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "v1OpenStackDomain": { - "description": "OpenStack domain. A Domain is a collection of projects, users, and roles", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of the Domain", - "type": "string" - }, - "id": { - "description": "ID is the unique ID of the domain", - "type": "string" - }, - "name": { - "description": "Name is the name of the domain", - "type": "string" - } - } - }, - "v1OpenStackFlavor": { - "description": "OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources", - "type": "object", - "properties": { - "disk": { - "description": "Disk is the amount of root disk, measured in GB", - "type": "integer" - }, - "ephemeral": { - "description": "Ephemeral is the amount of ephemeral disk space, measured in GB", - "type": "integer" - }, - "id": { - "description": "ID is the flavor's unique ID", - "type": "string" - }, - "memory": { - "description": "Amount of memory, measured in MB", - "type": "integer" - }, - "name": { - "description": "Name is the name of the flavor", - "type": "string" - }, - "vcpus": { - "description": "VCPUs indicates how many (virtual) CPUs are available for this flavor", - "type": "integer" - } - } - }, - "v1OpenStackFlavors": { - "description": "List of OpenStack flavours", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources", - "type": "object", - "properties": { - "disk": { - "description": "Disk is the amount of root disk, measured in GB", - "type": "integer" - }, - "ephemeral": { - "description": "Ephemeral is the amount of ephemeral disk space, measured in GB", - "type": "integer" - }, - "id": { - "description": "ID is the flavor's unique ID", - "type": "string" - }, - "memory": { - "description": "Amount of memory, measured in MB", - "type": "integer" - }, - "name": { - "description": "Name is the name of the flavor", - "type": "string" - }, - "vcpus": { - "description": "VCPUs indicates how many (virtual) CPUs are available for this flavor", - "type": "integer" - } - } - } - } - } - }, - "v1OpenStackKeypair": { - "description": "OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers", - "type": "object", - "properties": { - "name": { - "description": "Name is used to refer to this keypair from other services within this region", - "type": "string" - }, - "publicKey": { - "description": "PublicKey is the public key from this pair, in OpenSSH format", - "type": "string" - } - } - }, - "v1OpenStackKeypairs": { - "description": "List of OpenStack keypairs", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers", - "type": "object", - "properties": { - "name": { - "description": "Name is used to refer to this keypair from other services within this region", - "type": "string" - }, - "publicKey": { - "description": "PublicKey is the public key from this pair, in OpenSSH format", - "type": "string" - } - } - } - } - } - }, - "v1OpenStackMachine": { - "description": "OpenStack cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "OpenStack cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "nics" - ], - "properties": { - "az": { - "type": "string" - }, - "image": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "OpenStack network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "projectId": { - "type": "string" - }, - "securityGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1OpenStackMachineConfigEntity": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1OpenStackMachinePoolCloudConfigEntity": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "Root disk size", - "type": "integer", - "format": "int32" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "v1OpenStackMachinePoolConfig": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "DiskGiB is used to configure rootVolume, the volume metadata to boot from", - "type": "integer", - "format": "int32" - }, - "flavor": { - "description": "Openstack flavor name, only return argument", - "type": "string" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "image": { - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1OpenStackMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "Root disk size", - "type": "integer", - "format": "int32" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1OpenStackMachineSpec": { - "description": "OpenStack cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "nics" - ], - "properties": { - "az": { - "type": "string" - }, - "image": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "OpenStack network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "projectId": { - "type": "string" - }, - "securityGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "v1OpenStackMachines": { - "description": "OpenStack machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "OpenStack cloud VM definition spec", - "type": "object", - "required": [ - "instanceType", - "nics" - ], - "properties": { - "az": { - "type": "string" - }, - "image": { - "type": "string" - }, - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "OpenStack network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "projectId": { - "type": "string" - }, - "securityGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeyName": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1OpenStackNetwork": { - "description": "OpenStack network", - "type": "object", - "properties": { - "description": { - "description": "Description of OpenStack network", - "type": "string" - }, - "id": { - "description": "Id of OpenStack network", - "type": "string" - }, - "name": { - "description": "Name of OpenStack network", - "type": "string" - }, - "subnets": { - "description": "Subnets associated with OpenStack network", - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack subnet entity", - "type": "object", - "properties": { - "description": { - "description": "Description for the network", - "type": "string" - }, - "id": { - "description": "UUID for the network", - "type": "string" - }, - "name": { - "description": "Human-readable name for the network. Might not be unique", - "type": "string" - } - } - } - } - } - }, - "v1OpenStackNetworks": { - "description": "List of OpenStack networks", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack network", - "type": "object", - "properties": { - "description": { - "description": "Description of OpenStack network", - "type": "string" - }, - "id": { - "description": "Id of OpenStack network", - "type": "string" - }, - "name": { - "description": "Name of OpenStack network", - "type": "string" - }, - "subnets": { - "description": "Subnets associated with OpenStack network", - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack subnet entity", - "type": "object", - "properties": { - "description": { - "description": "Description for the network", - "type": "string" - }, - "id": { - "description": "UUID for the network", - "type": "string" - }, - "name": { - "description": "Human-readable name for the network. Might not be unique", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1OpenStackNic": { - "description": "OpenStack network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1OpenStackProject": { - "description": "Project represents an OpenStack Identity Project", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of the project", - "type": "string" - }, - "domainId": { - "description": "DomainID is the domain ID the project belongs to", - "type": "string" - }, - "id": { - "description": "ID is the unique ID of the project", - "type": "string" - }, - "name": { - "description": "Name is the name of the project", - "type": "string" - }, - "parentProjectId": { - "description": "ParentID is the parent_id of the project", - "type": "string" - } - } - }, - "v1OpenStackProjects": { - "description": "Array of OpenStack projects", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Project represents an OpenStack Identity Project", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of the project", - "type": "string" - }, - "domainId": { - "description": "DomainID is the domain ID the project belongs to", - "type": "string" - }, - "id": { - "description": "ID is the unique ID of the project", - "type": "string" - }, - "name": { - "description": "Name is the name of the project", - "type": "string" - }, - "parentProjectId": { - "description": "ParentID is the parent_id of the project", - "type": "string" - } - } - } - } - } - }, - "v1OpenStackRegion": { - "description": "OpenStack region entity", - "type": "object", - "properties": { - "description": { - "description": "Description of OpenStack region", - "type": "string" - }, - "id": { - "description": "Id of OpenStack region", - "type": "string" - }, - "parentRegionId": { - "description": "Parent region id of OpenStack region", - "type": "string" - } - } - }, - "v1OpenStackRegions": { - "description": "List of OpenStack regions and domains", - "type": "object", - "required": [ - "regions", - "domains" - ], - "properties": { - "domains": { - "description": "List of OpenStack domains", - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack domain. A Domain is a collection of projects, users, and roles", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of the Domain", - "type": "string" - }, - "id": { - "description": "ID is the unique ID of the domain", - "type": "string" - }, - "name": { - "description": "Name is the name of the domain", - "type": "string" - } - } - } - }, - "regions": { - "description": "List of OpenStack regions", - "type": "array", - "uniqueItems": true, - "items": { - "description": "OpenStack region entity", - "type": "object", - "properties": { - "description": { - "description": "Description of OpenStack region", - "type": "string" - }, - "id": { - "description": "Id of OpenStack region", - "type": "string" - }, - "parentRegionId": { - "description": "Parent region id of OpenStack region", - "type": "string" - } - } - } - } - } - }, - "v1OpenStackResource": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1OpenStackSubnet": { - "description": "OpenStack subnet entity", - "type": "object", - "properties": { - "description": { - "description": "Description for the network", - "type": "string" - }, - "id": { - "description": "UUID for the network", - "type": "string" - }, - "name": { - "description": "Human-readable name for the network. Might not be unique", - "type": "string" - } - } - }, - "v1OpenstackFlavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "v1OrgState": { - "description": "Org state", - "type": "object", - "properties": { - "state": { - "type": "string" - } - } - }, - "v1Organization": { - "description": "Describes user's organization details", - "type": "object", - "properties": { - "authType": { - "description": "Describes user's enabled authorization mode", - "type": "string" - }, - "name": { - "description": "Describes user's organization name", - "type": "string" - }, - "redirectUrl": { - "description": "Describes user's organization authentication url", - "type": "string" - }, - "ssoLogins": { - "description": "Describes the allowed sso logins", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the allowed sso login details", - "type": "object", - "properties": { - "displayName": { - "description": "Describes the display name for the sso login", - "type": "string" - }, - "logo": { - "description": "Describes the url path for the sso login", - "type": "string" - }, - "name": { - "description": "Describes the processed name for the sso login", - "type": "string" - }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "type": "string" - } - } - } - } - } - }, - "v1Organizations": { - "description": "Returns a list of user's organizations details and login methods", - "type": "object", - "properties": { - "organizations": { - "description": "Describes a list of user's organization", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes user's organization details", - "type": "object", - "properties": { - "authType": { - "description": "Describes user's enabled authorization mode", - "type": "string" - }, - "name": { - "description": "Describes user's organization name", - "type": "string" - }, - "redirectUrl": { - "description": "Describes user's organization authentication url", - "type": "string" - }, - "ssoLogins": { - "description": "Describes the allowed sso logins", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the allowed sso login details", - "type": "object", - "properties": { - "displayName": { - "description": "Describes the display name for the sso login", - "type": "string" - }, - "logo": { - "description": "Describes the url path for the sso login", - "type": "string" - }, - "name": { - "description": "Describes the processed name for the sso login", - "type": "string" - }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1OsPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - }, - "v1OsPatchEntity": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "v1OsType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - }, - "v1OverloadSpec": { - "description": "Overload spec", - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string", - "x-omitempty": false - }, - "ipAddress": { - "type": "string" - }, - "ipPools": { - "type": "array", - "items": { - "description": "IP Pool entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } - } - }, - "status": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "isSelfHosted": { - "type": "boolean" - }, - "isSystem": { - "type": "boolean" - }, - "spectroClusterUid": { - "type": "string", - "x-omitempty": false - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1OverloadStatus": { - "description": "Overload status", - "type": "object", - "properties": { - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isReady": { - "type": "boolean", - "x-omitempty": false - }, - "kubectlCommands": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1OverloadVsphereOva": { - "description": "Overload ova details", - "type": "object", - "properties": { - "location": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1Overlord": { - "description": "Overlord defintiion", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Overload spec", - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string", - "x-omitempty": false - }, - "ipAddress": { - "type": "string" - }, - "ipPools": { - "type": "array", - "items": { - "description": "IP Pool entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } - } - }, - "status": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "isSelfHosted": { - "type": "boolean" - }, - "isSystem": { - "type": "boolean" - }, - "spectroClusterUid": { - "type": "string", - "x-omitempty": false - }, - "tenantUid": { - "type": "string" - } - } - }, - "status": { - "description": "Overload status", - "type": "object", - "properties": { - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isReady": { - "type": "boolean", - "x-omitempty": false - }, - "kubectlCommands": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1OverlordMaasAccountCreate": { - "properties": { - "account": { - "type": "object", - "required": [ - "apiKey", - "apiEndpoint" - ], - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiKey": { - "type": "string" - }, - "preferredSubnets": { - "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", - "type": "array", - "items": { - "type": "string", - "default": "" - } - } - } - }, - "name": { - "description": "Name for the private gateway \u0026 cloud account", - "type": "string" - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1OverlordMaasAccountEntity": { - "properties": { - "account": { - "type": "object", - "required": [ - "apiKey", - "apiEndpoint" - ], - "properties": { - "apiEndpoint": { - "type": "string" - }, - "apiKey": { - "type": "string" - }, - "preferredSubnets": { - "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", - "type": "array", - "items": { - "type": "string", - "default": "" - } - } - } - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1OverlordMaasCloudConfig": { - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "clusterProfiles": { - "description": "Cluster profiles pack configuration for private gateway cluster", - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "clusterSettings": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machineConfig": { - "type": "object", - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "resourcePool": { - "type": "string" - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - } - } - }, - "v1OverlordManifest": { - "description": "overlord manifest", - "type": "object", - "properties": { - "manifest": { - "type": "string" - } - } - }, - "v1OverlordMigrateEntity": { - "properties": { - "sourceUid": { - "type": "string" - }, - "targetUid": { - "type": "string" - } - } - }, - "v1OverlordOpenStackAccountCreate": { - "properties": { - "account": { - "description": "auth-url,project,username,password,domain,cacert etc", - "type": "object", - "required": [ - "identityEndpoint", - "username", - "password" - ], - "properties": { - "caCert": { - "description": "Ca cert for OpenStack", - "type": "string" - }, - "defaultDomain": { - "description": "Default Domain name", - "type": "string" - }, - "defaultProject": { - "description": "Default Project name", - "type": "string" - }, - "identityEndpoint": { - "description": "Identity endpoint for OpenStack", - "type": "string" - }, - "insecure": { - "description": "For self signed certs in IdentityEndpoint", - "type": "boolean" - }, - "parentRegion": { - "description": "Parent region of OpenStack", - "type": "string" - }, - "password": { - "description": "Password of OpenStack account", - "type": "string" - }, - "username": { - "description": "Username of OpenStack account", - "type": "string" - } - } - }, - "name": { - "description": "Name for the private gateway \u0026 cloud account", - "type": "string" - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1OverlordOpenStackAccountEntity": { - "properties": { - "account": { - "description": "auth-url,project,username,password,domain,cacert etc", - "type": "object", - "required": [ - "identityEndpoint", - "username", - "password" - ], - "properties": { - "caCert": { - "description": "Ca cert for OpenStack", - "type": "string" - }, - "defaultDomain": { - "description": "Default Domain name", - "type": "string" - }, - "defaultProject": { - "description": "Default Project name", - "type": "string" - }, - "identityEndpoint": { - "description": "Identity endpoint for OpenStack", - "type": "string" - }, - "insecure": { - "description": "For self signed certs in IdentityEndpoint", - "type": "boolean" - }, - "parentRegion": { - "description": "Parent region of OpenStack", - "type": "string" - }, - "password": { - "description": "Password of OpenStack account", - "type": "string" - }, - "username": { - "description": "Username of OpenStack account", - "type": "string" - } - } - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1OverlordOpenStackCloudConfig": { - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "clusterProfiles": { - "description": "Cluster profiles pack configuration for private gateway cluster", - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "clusterSettings": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machineConfig": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - } - } - }, - "v1OverlordVsphereAccountCreate": { - "properties": { - "account": { - "type": "object", - "required": [ - "vcenterServer", - "username", - "password" - ], - "properties": { - "insecure": { - "description": "Insecure is a flag that controls whether or not to validate the vSphere server's certificate.", - "type": "boolean", - "x-omitempty": false - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "name": { - "description": "Name for the private gateway \u0026 cloud account", - "type": "string" - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1OverlordVsphereAccountEntity": { - "properties": { - "account": { - "type": "object", - "required": [ - "vcenterServer", - "username", - "password" - ], - "properties": { - "insecure": { - "description": "Insecure is a flag that controls whether or not to validate the vSphere server's certificate.", - "type": "boolean", - "x-omitempty": false - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "shareWithProjects": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1OverlordVsphereCloudConfig": { - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "clusterProfiles": { - "description": "Cluster profiles pack configuration for private gateway cluster", - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "clusterSettings": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - } - } - }, - "v1Overlords": { - "description": "Array of Overlords", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Overlord defintiion", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Overload spec", - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string", - "x-omitempty": false - }, - "ipAddress": { - "type": "string" - }, - "ipPools": { - "type": "array", - "items": { - "description": "IP Pool entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } - } - }, - "status": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "isSelfHosted": { - "type": "boolean" - }, - "isSystem": { - "type": "boolean" - }, - "spectroClusterUid": { - "type": "string", - "x-omitempty": false - }, - "tenantUid": { - "type": "string" - } - } - }, - "status": { - "description": "Overload status", - "type": "object", - "properties": { - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isReady": { - "type": "boolean", - "x-omitempty": false - }, - "kubectlCommands": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1PackConfig": { - "description": "Pack configuration", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "associatedObject": { - "type": "string" - }, - "isValuesOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "digest": { - "type": "string" - }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "parentUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "v1PackConfigSpec": { - "type": "object", - "properties": { - "associatedObject": { - "type": "string" - }, - "isValuesOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "digest": { - "type": "string" - }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "parentUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1PackDependency": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - }, - "v1PackDependencyMeta": { - "description": "Pack dependency metadata", - "type": "object", - "properties": { - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "v1PackEntity": { - "description": "Pack object", - "type": "object", - "required": [ - "uid", - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - }, - "v1PackFilterSpec": { - "description": "Packs filter spec", - "properties": { - "addOnSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "addOnType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "displayName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "environment": { - "description": "Pack supported cloud types", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isFips": { - "description": "isFips compliant", - "type": "boolean" - }, - "layer": { - "description": "Pack layer", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - } - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "source": { - "description": "The source filter describes the creation origin/source of the pack. Ex. source can be \"spectrocloud\" or \"community\"", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "state": { - "description": "Pack state such as deprecated or disabled", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "type": { - "description": "Pack type", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - } - } - } - }, - "v1PackImportEntity": { - "description": "Pack import request payload", - "type": "object", - "properties": { - "layer": { - "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]", - "type": "string" - }, - "manifests": { - "description": "Pack manifests array", - "type": "array", - "items": { - "description": "Pack manifest import objct", - "type": "object", - "properties": { - "content": { - "description": "Pack manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Pack manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registry": { - "description": "Pack registry import entity", - "type": "object", - "properties": { - "matchingRegistries": { - "type": "array", - "items": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "metadata": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - } - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "description": "Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]", - "type": "string" - }, - "values": { - "description": "Pack values are the customizable configurations for the pack", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "v1PackInputEntity": { - "description": "Pack request payload", - "properties": { - "pack": { - "description": "Pack request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - } - }, - "v1PackLayer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "v1PackManifestEntity": { - "description": "Pack request payload", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest request payload", - "properties": { - "content": { - "description": "Manifest content", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - }, - "v1PackManifestImportEntity": { - "description": "Pack manifest import objct", - "type": "object", - "properties": { - "content": { - "description": "Pack manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Pack manifest name", - "type": "string" - } - } - }, - "v1PackManifestRef": { - "type": "object", - "properties": { - "digest": { - "type": "string" - }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "parentUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1PackManifestUpdateEntity": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - }, - "v1PackManifests": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Manifests array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Manifest object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Manifest spec", - "properties": { - "published": { - "description": "Published manifest object", - "type": "object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "digest": { - "description": "Manifest digest", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1PackManifestsSpec": { - "description": "Pack manifests spec", - "type": "object", - "properties": { - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "Manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "v1PackMetadata": { - "description": "Pack metadata object", - "type": "object", - "properties": { - "apiVersion": { - "description": "Pack api version", - "type": "string" - }, - "kind": { - "description": "Pack kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack metadata spec", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registries": { - "description": "Pack registries array", - "type": "array", - "items": { - "description": "Registry metadata information", - "properties": { - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "latestPackUid": { - "description": "Latest pack uid", - "type": "string" - }, - "latestVersion": { - "description": "Pack latest version", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "scope": { - "description": "Pack registry scope", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - } - } - } - } - }, - "v1PackMetadataList": { - "description": "List of packs metadata", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Packs metadata array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack metadata object", - "type": "object", - "properties": { - "apiVersion": { - "description": "Pack api version", - "type": "string" - }, - "kind": { - "description": "Pack kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack metadata spec", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registries": { - "description": "Pack registries array", - "type": "array", - "items": { - "description": "Registry metadata information", - "properties": { - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "latestPackUid": { - "description": "Latest pack uid", - "type": "string" - }, - "latestVersion": { - "description": "Pack latest version", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "scope": { - "description": "Pack registry scope", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1PackMetadataSpec": { - "description": "Pack metadata spec", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registries": { - "description": "Pack registries array", - "type": "array", - "items": { - "description": "Registry metadata information", - "properties": { - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "latestPackUid": { - "description": "Latest pack uid", - "type": "string" - }, - "latestVersion": { - "description": "Pack latest version", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "scope": { - "description": "Pack registry scope", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - } - } - }, - "v1PackParamsEntity": { - "description": "Pack params request payload", - "properties": { - "references": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1PackPreset": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - }, - "v1PackReadme": { - "properties": { - "readme": { - "description": "Readme describes the documentation of the specified pack", - "type": "string" - } - } - }, - "v1PackRef": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "v1PackRefSummary": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1PackRefSummaryResponse": { - "description": "Pack summary response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack summary spec", - "properties": { - "macros": { - "description": "Pack resolved values", - "properties": { - "resolved": { - "description": "Pack resolved values map", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "pack": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "registry": { - "description": "Registry meta", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean", - "x-omitempty": false - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - }, - "v1PackRefSummarySpec": { - "description": "Pack summary spec", - "properties": { - "macros": { - "description": "Pack resolved values", - "properties": { - "resolved": { - "description": "Pack resolved values map", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "pack": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "registry": { - "description": "Registry meta", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean", - "x-omitempty": false - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1PackRegistries": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack registry information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - }, - "private": { - "type": "boolean", - "x-omitempty": false - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Status of the pack registry", - "type": "object", - "properties": { - "packSyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1PackRegistriesSummary": { - "description": "Pack Registries Summary", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack Registry summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack Registry spec summary", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "private": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Pack registry status summary", - "type": "object", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1PackRegistry": { - "description": "Pack registry information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - }, - "private": { - "type": "boolean", - "x-omitempty": false - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Status of the pack registry", - "type": "object", - "properties": { - "packSyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "v1PackRegistryImportEntity": { - "description": "Pack registry import entity", - "type": "object", - "properties": { - "matchingRegistries": { - "type": "array", - "items": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - }, - "metadata": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - } - } - }, - "v1PackRegistryMetadata": { - "description": "Pack registry metadata", - "type": "object", - "properties": { - "isPrivate": { - "description": "If true then pack registry is private and is not accessible for the pack sync", - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "providerType": { - "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - }, - "v1PackRegistrySpec": { - "description": "Pack registry credentials spec", - "type": "object", - "required": [ - "endpoint", - "auth" - ], - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - }, - "private": { - "type": "boolean", - "x-omitempty": false - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1PackRegistrySpecSummary": { - "description": "Pack Registry spec summary", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "private": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" - } - } - }, - "v1PackRegistryStatus": { - "description": "Status of the pack registry", - "type": "object", - "properties": { - "packSyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - }, - "v1PackRegistryStatusSummary": { - "description": "Pack registry status summary", - "type": "object", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - }, - "v1PackRegistrySummary": { - "description": "Pack Registry summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack Registry spec summary", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "private": { - "type": "boolean", - "x-omitempty": false - }, - "scope": { - "type": "string" - } - } - }, - "status": { - "description": "Pack registry status summary", - "type": "object", - "properties": { - "sync": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - } - } - } - } - }, - "v1PackResolvedValues": { - "description": "Pack resolved values", - "properties": { - "resolved": { - "description": "Pack resolved values map", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1PackSchema": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1PackSortFields": { - "description": "Packs sort by fields", - "type": "string", - "enum": [ - "name", - "type", - "layer", - "addOnType", - "displayName" - ], - "x-nullable": true - }, - "v1PackSortSpec": { - "description": "Packs sort spec", - "properties": { - "field": { - "description": "Packs sort by fields", - "type": "string", - "enum": [ - "name", - "type", - "layer", - "addOnType", - "displayName" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1PackSummaries": { - "description": "List of packs", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "Packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack summary object", - "type": "object", - "properties": { - "apiVersion": { - "description": "Pack api version", - "type": "string" - }, - "kind": { - "description": "Pack kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1PackSummary": { - "description": "Pack summary object", - "type": "object", - "properties": { - "apiVersion": { - "description": "Pack api version", - "type": "string" - }, - "kind": { - "description": "Pack kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - }, - "v1PackSummarySpec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "v1PackSummaryStatus": { - "description": "Pack status", - "type": "object" - }, - "v1PackTagEntity": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "packValues": { - "description": "Pack values array", - "type": "array", - "items": { - "type": "object", - "properties": { - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "dependencies": { - "description": "Pack dependencies array", - "type": "array", - "items": { - "description": "Pack dependency metadata", - "type": "object", - "properties": { - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - } - }, - "packUid": { - "description": "Pack uid", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "readme": { - "description": "Readme describes the documentation of the specified pack", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters", - "type": "string" - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tags": { - "description": "Pack version tags array", - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "description": "Pack group", - "type": "string" - }, - "packUid": { - "description": "Pack uid", - "type": "string" - }, - "parentTags": { - "description": "Pack version parent tags", - "type": "array", - "items": { - "type": "string" - } - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - } - } - } - }, - "v1PackTags": { - "type": "object", - "properties": { - "group": { - "description": "Pack group", - "type": "string" - }, - "packUid": { - "description": "Pack uid", - "type": "string" - }, - "parentTags": { - "description": "Pack version parent tags", - "type": "array", - "items": { - "type": "string" - } - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "v1PackTemplate": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "v1PackTemplateParameter": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - }, - "v1PackTemplateParameterOption": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - }, - "v1PackTemplateParameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "v1PackType": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "v1PackUidValues": { - "type": "object", - "properties": { - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "dependencies": { - "description": "Pack dependencies array", - "type": "array", - "items": { - "description": "Pack dependency metadata", - "type": "object", - "properties": { - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - } - }, - "packUid": { - "description": "Pack uid", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "readme": { - "description": "Readme describes the documentation of the specified pack", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters", - "type": "string" - } - } - }, - "v1PackUpdateEntity": { - "description": "Pack update request payload", - "properties": { - "pack": { - "description": "Pack object", - "type": "object", - "required": [ - "uid", - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - } - }, - "v1PackValuesEntity": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - }, - "v1PacksFilterSpec": { - "description": "Packs filter spec", - "properties": { - "filter": { - "description": "Packs filter spec", - "properties": { - "addOnSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "addOnType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "displayName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "environment": { - "description": "Pack supported cloud types", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isFips": { - "description": "isFips compliant", - "type": "boolean" - }, - "layer": { - "description": "Pack layer", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - } - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "source": { - "description": "The source filter describes the creation origin/source of the pack. Ex. source can be \"spectrocloud\" or \"community\"", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "state": { - "description": "Pack state such as deprecated or disabled", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "type": { - "description": "Pack type", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Packs sort spec", - "properties": { - "field": { - "description": "Packs sort by fields", - "type": "string", - "enum": [ - "name", - "type", - "layer", - "addOnType", - "displayName" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1PairingCode": { - "description": "Pairing code response", - "type": "object", - "properties": { - "pairingCode": { - "type": "string" - } - } - }, - "v1Partition": { - "type": "object", - "properties": { - "fileSystemType": { - "type": "string" - }, - "freeSpace": { - "type": "integer", - "format": "int32" - }, - "mountPoint": { - "type": "string" - }, - "totalSpace": { - "type": "integer", - "format": "int32" - }, - "usedSpace": { - "type": "integer", - "format": "int32" - } - } - }, - "v1PasswordsBlockListEntity": { - "description": "List of block listed passwords", - "type": "object", - "properties": { - "passwords": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1PaymentIntent": { - "description": "Payment setup object", - "properties": { - "clientSecret": { - "description": "Payment client secret", - "type": "string" - }, - "paymentIntentId": { - "description": "Payment intent id", - "type": "string" - }, - "status": { - "description": "Status of payment intent", - "type": "string" - } - } - }, - "v1PaymentMethod": { - "description": "Payment method object", - "properties": { - "card": { - "description": "Card details object", - "properties": { - "brand": { - "description": "Card brand", - "type": "string" - }, - "country": { - "description": "Country name the card belongs", - "type": "string" - }, - "expYear": { - "description": "Expiry year of the card", - "type": "number", - "format": "uint64" - }, - "fingerPrint": { - "description": "Finger print", - "type": "string" - }, - "funding": { - "description": "Funding", - "type": "string" - }, - "last4": { - "description": "Last 4 digit of the card", - "type": "string" - } - } - }, - "customerId": { - "description": "Customer uid", - "type": "string" - }, - "firstName": { - "description": "First name of the user", - "type": "string" - }, - "lastName": { - "description": "Last name of the user", - "type": "string" - }, - "paymentMethodId": { - "description": "Payment method uid", - "type": "string" - } - } - }, - "v1PaymentMethods": { - "description": "Payment Method list", - "properties": { - "defaultPaymentMethod": { - "description": "Default payment method", - "type": "string" - }, - "paymentMethods": { - "description": "List of payment method", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Payment method object", - "properties": { - "card": { - "description": "Card details object", - "properties": { - "brand": { - "description": "Card brand", - "type": "string" - }, - "country": { - "description": "Country name the card belongs", - "type": "string" - }, - "expYear": { - "description": "Expiry year of the card", - "type": "number", - "format": "uint64" - }, - "fingerPrint": { - "description": "Finger print", - "type": "string" - }, - "funding": { - "description": "Funding", - "type": "string" - }, - "last4": { - "description": "Last 4 digit of the card", - "type": "string" - } - } - }, - "customerId": { - "description": "Customer uid", - "type": "string" - }, - "firstName": { - "description": "First name of the user", - "type": "string" - }, - "lastName": { - "description": "Last name of the user", - "type": "string" - }, - "paymentMethodId": { - "description": "Payment method uid", - "type": "string" - } - } - } - } - } - }, - "v1PaymentPlan": { - "description": "Stripe price detail object", - "properties": { - "billingScheme": { - "description": "Billing scheme", - "type": "string" - }, - "currency": { - "description": "Unit of currency", - "type": "string" - }, - "id": { - "description": "Stripe payment plan id", - "type": "string" - }, - "name": { - "description": "Name of the stripe plan", - "type": "string" - }, - "productId": { - "description": "Product identifier", - "type": "string" - }, - "type": { - "description": "Type of payment plan", - "type": "string" - }, - "unitAmount": { - "description": "Unit amount for the product", - "type": "number", - "format": "int64" - } - } - }, - "v1PaymentPlans": { - "description": "Payment plan object model", - "type": "object", - "required": [ - "stripePlanDetails" - ], - "properties": { - "stripePlanDetails": { - "description": "List of Stripe plan details", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Stripe price detail object", - "properties": { - "billingScheme": { - "description": "Billing scheme", - "type": "string" - }, - "currency": { - "description": "Unit of currency", - "type": "string" - }, - "id": { - "description": "Stripe payment plan id", - "type": "string" - }, - "name": { - "description": "Name of the stripe plan", - "type": "string" - }, - "productId": { - "description": "Product identifier", - "type": "string" - }, - "type": { - "description": "Type of payment plan", - "type": "string" - }, - "unitAmount": { - "description": "Unit amount for the product", - "type": "number", - "format": "int64" - } - } - } - } - } - }, - "v1PaymentSecrets": { - "description": "payment secrets", - "properties": { - "publishableKey": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - }, - "v1PaymentSubscription": { - "description": "Payment subscription object", - "properties": { - "customerId": { - "description": "Customer uid", - "type": "string" - }, - "paymentIntent": { - "description": "Payment setup object", - "properties": { - "clientSecret": { - "description": "Payment client secret", - "type": "string" - }, - "paymentIntentId": { - "description": "Payment intent id", - "type": "string" - }, - "status": { - "description": "Status of payment intent", - "type": "string" - } - } - }, - "paymentMethodIds": { - "description": "List of payment method uids", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "planType": { - "description": "Plan type", - "type": "string" - }, - "priceId": { - "description": "Price uid", - "type": "string" - }, - "subscriptionId": { - "description": "Subscription uid", - "type": "string" - }, - "subscriptionState": { - "description": "Plan subscription state", - "type": "string" - } - } - }, - "v1PcgSelfHostedParams": { - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1PcgServiceKubectlCommands": { - "description": "Array of kubectl commands", - "type": "object", - "required": [ - "kubectlCommands" - ], - "properties": { - "kubectlCommands": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "overlordUid": { - "type": "string" - } - } - }, - "v1PcgsSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Overlord defintiion", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Overload spec", - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string", - "x-omitempty": false - }, - "ipAddress": { - "type": "string" - }, - "ipPools": { - "type": "array", - "items": { - "description": "IP Pool entity definition", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "priavetGatewayUid": { - "type": "string" - }, - "restrictToSingleCluster": { - "description": "if true, restricts this IP pool to be used by single cluster at any time", - "type": "boolean", - "x-omitempty": false - } - } - }, - "status": { - "description": "IP Pool status", - "type": "object", - "properties": { - "allottedIps": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "associatedClusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "inUse": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "isSelfHosted": { - "type": "boolean" - }, - "isSystem": { - "type": "boolean" - }, - "spectroClusterUid": { - "type": "string", - "x-omitempty": false - }, - "tenantUid": { - "type": "string" - } - } - }, - "status": { - "description": "Overload status", - "type": "object", - "properties": { - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isReady": { - "type": "boolean", - "x-omitempty": false - }, - "kubectlCommands": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1Permission": { - "description": "Permission information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "permissions": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - } - } - }, - "v1Permissions": { - "description": "Array of permissions", - "type": "array", - "items": { - "description": "Permission information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "permissions": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - } - } - } - }, - "v1Plan": { - "description": "Plan", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Plan specifications", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "cost": { - "description": "Plan Cost", - "properties": { - "discount": { - "type": "number", - "format": "float", - "x-omitempty": false - }, - "price": { - "type": "number", - "format": "float", - "x-omitempty": false - } - } - }, - "developerCredits": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "freeCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "renewal": { - "description": "Plan Renewal", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "slaCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tierPricing": { - "description": "tier price", - "properties": { - "alloyPricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - }, - "purePricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "status": { - "type": "object", - "properties": { - "changeLogs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "v1PlanAddFreeCreditUpdate": { - "description": "Plan add free credit update entity", - "properties": { - "credit": { - "description": "Plan Credit entity for create/update request", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - } - }, - "v1PlanAddSlaCreditUpdate": { - "description": "Plan add sla credit update entity", - "properties": { - "credit": { - "description": "Plan Credit entity for create/update request", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - } - }, - "v1PlanChangeUpdate": { - "description": "Plan change update entity", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isPaymentGateway": { - "type": "boolean" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tierPrice": { - "description": "tier price", - "properties": { - "alloyPricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - }, - "purePricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "v1PlanCost": { - "description": "Plan Cost", - "properties": { - "discount": { - "type": "number", - "format": "float", - "x-omitempty": false - }, - "price": { - "type": "number", - "format": "float", - "x-omitempty": false - } - } - }, - "v1PlanCpuCoreHoursUsages": { - "type": "object", - "properties": { - "hourlyUsages": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ResourceUsage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - } - } - }, - "v1PlanCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "v1PlanCreditEntity": { - "description": "Plan Credit entity for create/update request", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "v1PlanCreditUpdate": { - "description": "Plan credit update entity", - "properties": { - "credit": { - "description": "Plan Credit entity for create/update request", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - } - }, - "v1PlanExpiry": { - "description": "Plan expiry", - "required": [ - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1PlanLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "v1PlanLimitSpec": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "v1PlanLimitUpdate": { - "description": "Plan limit change update entity", - "required": [ - "planLimit" - ], - "properties": { - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - } - } - }, - "v1PlanMonthlyUsage": { - "description": "Plan monthly usage entity", - "properties": { - "dailyUsages": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ResourceUsage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "planType": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "planUid": { - "type": "string" - }, - "totalMonthlyUsage": { - "description": "Total Resource Usage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "v1PlanMonthlyUsages": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "description": "Plan monthly usage entity", - "properties": { - "dailyUsages": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ResourceUsage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "planType": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - }, - "planUid": { - "type": "string" - }, - "totalMonthlyUsage": { - "description": "Total Resource Usage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1PlanRenewal": { - "description": "Plan Renewal", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "v1PlanRenewalUpdate": { - "description": "Plan add renawal update entity", - "properties": { - "renewal": { - "description": "Plan Renewal", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - } - } - }, - "v1PlanSpec": { - "description": "Plan specifications", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "cost": { - "description": "Plan Cost", - "properties": { - "discount": { - "type": "number", - "format": "float", - "x-omitempty": false - }, - "price": { - "type": "number", - "format": "float", - "x-omitempty": false - } - } - }, - "developerCredits": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "freeCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "renewal": { - "description": "Plan Renewal", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "slaCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tierPricing": { - "description": "tier price", - "properties": { - "alloyPricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - }, - "purePricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "v1PlanStatus": { - "type": "object", - "properties": { - "changeLogs": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1Plans": { - "description": "Array of Plans", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Plan", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Plan specifications", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "cost": { - "description": "Plan Cost", - "properties": { - "discount": { - "type": "number", - "format": "float", - "x-omitempty": false - }, - "price": { - "type": "number", - "format": "float", - "x-omitempty": false - } - } - }, - "developerCredits": { - "description": "Credits allocated for each tenant/user", - "properties": { - "cpu": { - "description": "cpu in cores", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "memoryGiB": { - "description": "memory in GiB", - "type": "number", - "format": "int32", - "x-omitempty": false - }, - "storageGiB": { - "description": "storage in GiB", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "virtualClustersLimit": { - "description": "number of active virtual clusters", - "type": "number", - "format": "int32", - "x-omitempty": false - } - } - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "freeCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "renewal": { - "description": "Plan Renewal", - "required": [ - "type", - "start", - "expiry" - ], - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "slaCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tierPricing": { - "description": "tier price", - "properties": { - "alloyPricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - }, - "purePricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "Trial", - "MonthlyOnDemand", - "AnnualSubscription" - ] - } - } - }, - "status": { - "type": "object", - "properties": { - "changeLogs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1PlansUsageComputeSpec": { - "description": "Plans usage compute spec", - "type": "object", - "properties": { - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tenantUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1PodAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "v1Pool": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - }, - "v1PriceRange": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - }, - "v1PrivateCloudRateConfig": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "v1ProductUsage": { - "description": "Product usage", - "properties": { - "alloyUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pureUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "v1ProfileMetaEntity": { - "description": "Cluster profile metadata request payload", - "type": "object", - "required": [ - "metadata" - ], - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster profile update spec", - "type": "object", - "properties": { - "version": { - "description": "Cluster profile version", - "type": "string" - } - } - } - } - }, - "v1ProfileResolvedValues": { - "description": "Cluster profile resolved pack values", - "properties": { - "resolved": { - "description": "Cluster profile pack resolved values", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - }, - "v1ProfileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1ProfileTemplateSummary": { - "description": "Edge host clusterprofile template summary", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packs": { - "type": "array", - "items": { - "description": "Pack ref summary", - "properties": { - "addonType": { - "type": "string" - }, - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "displayName": { - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ProfileType": { - "type": "string", - "default": "cluster", - "enum": [ - "cluster", - "infra", - "add-on", - "system" - ] - }, - "v1Project": { - "description": "Project information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Project specifications", - "properties": { - "alerts": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "component": { - "type": "string" - } - } - } - }, - "logoUrl": { - "type": "string" - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isDisabled": { - "type": "boolean" - } - } - } - } - }, - "v1ProjectActiveAppDeployment": { - "description": "Active app deployment", - "type": "object", - "properties": { - "appRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ProjectActiveAppDeployments": { - "description": "Active app deployment", - "type": "object", - "properties": { - "apps": { - "type": "array", - "items": { - "description": "Active app deployment", - "type": "object", - "properties": { - "appRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "count": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ProjectActiveCluster": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1ProjectActiveClusters": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "count": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ProjectActiveResources": { - "description": "Active project resources", - "type": "object", - "properties": { - "appDeployments": { - "description": "Active app deployment", - "type": "object", - "properties": { - "apps": { - "type": "array", - "items": { - "description": "Active app deployment", - "type": "object", - "properties": { - "appRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "count": { - "type": "integer", - "format": "int32" - } - } - }, - "clusters": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "count": { - "type": "integer", - "format": "int32" - } - } - }, - "virtualClusters": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "count": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1ProjectAlertComponent": { - "description": "Project alert component", - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - }, - "supportedChannels": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1ProjectAlertComponents": { - "description": "Supported project alerts component", - "type": "object", - "properties": { - "components": { - "type": "array", - "items": { - "description": "Project alert component", - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - }, - "supportedChannels": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1ProjectCleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1ProjectCleanup": { - "description": "Project delete request payload", - "properties": { - "deletingClusterDurationThresholdInMin": { - "type": "integer", - "format": "int32" - }, - "provisioningClusterDurationThresholdInMin": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ProjectClusterSettings": { - "properties": { - "nodesAutoRemediationSetting": { - "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "tenantClusterSettings": { - "properties": { - "nodesAutoRemediationSetting": { - "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ProjectEntity": { - "description": "Project information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Project specifications", - "properties": { - "logoUid": { - "type": "string" - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ProjectEntitySpec": { - "description": "Project specifications", - "properties": { - "logoUid": { - "type": "string" - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - } - } - } - }, - "v1ProjectFilterSortFields": { - "type": "string", - "enum": [ - "name", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1ProjectFilterSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1ProjectFilterSpec": { - "description": "Project filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "v1ProjectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ProjectMetadata": { - "description": "Project metadata", - "properties": { - "metadata": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1ProjectPatch": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - }, - "v1ProjectResourceUsage": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1ProjectRolesEntity": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1ProjectRolesPatch": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "projectUid": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1ProjectSpec": { - "description": "Project specifications", - "properties": { - "alerts": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "component": { - "type": "string" - } - } - } - }, - "logoUrl": { - "type": "string" - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - } - } - } - }, - "v1ProjectSpecSummary": { - "type": "object", - "properties": { - "logoUrl": { - "type": "string" - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1ProjectStatus": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isDisabled": { - "type": "boolean" - } - } - }, - "v1ProjectStatusSummary": { - "description": "Project status summary", - "type": "object", - "properties": { - "clustersHealth": { - "description": "Spectro Clusters health data", - "type": "object", - "properties": { - "errored": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "healthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "running": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "unhealthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - }, - "status": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isDisabled": { - "type": "boolean" - } - } - }, - "usage": { - "description": "Project usage summary", - "type": "object", - "properties": { - "alloyCpuCores": { - "type": "number", - "x-omitempty": false - }, - "clusters": { - "type": "array", - "items": { - "description": "Cluster usage summary", - "type": "object", - "properties": { - "cpuCores": { - "type": "number", - "x-omitempty": false - }, - "isAlloy": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "pureCpuCores": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "v1ProjectSummary": { - "description": "Project summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "type": "object", - "properties": { - "logoUrl": { - "type": "string" - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Project status summary", - "type": "object", - "properties": { - "clustersHealth": { - "description": "Spectro Clusters health data", - "type": "object", - "properties": { - "errored": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "healthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "running": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "unhealthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - }, - "status": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isDisabled": { - "type": "boolean" - } - } - }, - "usage": { - "description": "Project usage summary", - "type": "object", - "properties": { - "alloyCpuCores": { - "type": "number", - "x-omitempty": false - }, - "clusters": { - "type": "array", - "items": { - "description": "Cluster usage summary", - "type": "object", - "properties": { - "cpuCores": { - "type": "number", - "x-omitempty": false - }, - "isAlloy": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "pureCpuCores": { - "type": "number", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ProjectTeamsEntity": { - "properties": { - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - } - } - } - }, - "v1ProjectUsage": { - "description": "Project usage object", - "properties": { - "alloy": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "pure": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - } - } - }, - "v1ProjectUsageData": { - "description": "Project usage data object", - "properties": { - "amount": { - "description": "Billing amount for the project", - "type": "number", - "format": "float64" - }, - "tierPrice": { - "description": "Tier price based on the usage", - "type": "number", - "format": "float64" - }, - "usedCredits": { - "description": "Project used credits", - "type": "number", - "format": "float64" - } - } - }, - "v1ProjectUsageSummary": { - "description": "Project usage summary", - "type": "object", - "properties": { - "alloyCpuCores": { - "type": "number", - "x-omitempty": false - }, - "clusters": { - "type": "array", - "items": { - "description": "Cluster usage summary", - "type": "object", - "properties": { - "cpuCores": { - "type": "number", - "x-omitempty": false - }, - "isAlloy": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "pureCpuCores": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1ProjectUsersEntity": { - "properties": { - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - } - } - } - }, - "v1Projects": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Project information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Project specifications", - "properties": { - "alerts": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "alertAllUsers": { - "type": "boolean", - "x-omitempty": false - }, - "createdBy": { - "type": "string" - }, - "http": { - "type": "object", - "properties": { - "body": { - "type": "string" - }, - "headers": { - "additionalProperties": { - "type": "string" - } - }, - "method": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "identifiers": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "status": { - "type": "object", - "properties": { - "isSucceeded": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "type": { - "type": "string", - "enum": [ - "email", - "app", - "http" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "component": { - "type": "string" - } - } - } - }, - "logoUrl": { - "type": "string" - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isDisabled": { - "type": "boolean" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1ProjectsFilterSpec": { - "description": "Project filter summary spec", - "properties": { - "filter": { - "description": "Project filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1ProjectsMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Project metadata", - "properties": { - "metadata": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1ProjectsSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Project summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "type": "object", - "properties": { - "logoUrl": { - "type": "string" - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Project status summary", - "type": "object", - "properties": { - "clustersHealth": { - "description": "Spectro Clusters health data", - "type": "object", - "properties": { - "errored": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "healthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "running": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "unhealthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - }, - "status": { - "description": "Project status", - "properties": { - "cleanUpStatus": { - "description": "Project cleanup status", - "type": "object", - "properties": { - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "isDisabled": { - "type": "boolean" - } - } - }, - "usage": { - "description": "Project usage summary", - "type": "object", - "properties": { - "alloyCpuCores": { - "type": "number", - "x-omitempty": false - }, - "clusters": { - "type": "array", - "items": { - "description": "Cluster usage summary", - "type": "object", - "properties": { - "cpuCores": { - "type": "number", - "x-omitempty": false - }, - "isAlloy": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "pureCpuCores": { - "type": "number", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1ProjectsWorkspaces": { - "description": "List projects and its workspaces", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace users and their roles", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1PublicCloudRateConfig": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "v1RateConfig": { - "description": "Rate config", - "properties": { - "aws": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "azure": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "custom": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Private cloud rate config", - "properties": { - "cloudType": { - "type": "string" - }, - "rateConfig": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - } - }, - "edge": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "edgeNative": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "gcp": { - "description": "Public cloud rate config", - "properties": { - "computeOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - }, - "memoryOptimized": { - "description": "Cloud instance rate config", - "properties": { - "computeRateProportion": { - "type": "number", - "format": "float" - }, - "memoryRateProportion": { - "type": "number", - "format": "float" - } - } - } - } - }, - "generic": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "libvirt": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "maas": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "openstack": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - }, - "vsphere": { - "description": "Private cloud rate config", - "properties": { - "cpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "gpuUnitPricePerHour": { - "type": "number", - "format": "float64" - }, - "memoryUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - }, - "storageUnitPriceGiBPerHour": { - "type": "number", - "format": "float64" - } - } - } - } - }, - "v1RegistriesMetadata": { - "description": "Pack Registries Metadata", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Registry meta", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean", - "x-omitempty": false - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1RegistryAuth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "v1RegistryConf": { - "description": "Registry configuration", - "type": "object", - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - } - } - }, - "v1RegistryConfigEntity": { - "description": "Registry configuration entity", - "type": "object", - "properties": { - "config": { - "description": "Registry configuration", - "type": "object", - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "v1RegistryConfiguration": { - "description": "Registry configuration", - "type": "object", - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1RegistryMetadata": { - "description": "Registry meta", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean", - "x-omitempty": false - }, - "isPrivate": { - "type": "boolean", - "x-omitempty": false - }, - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1RegistryPackMetadata": { - "description": "Registry metadata information", - "properties": { - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "latestPackUid": { - "description": "Latest pack uid", - "type": "string" - }, - "latestVersion": { - "description": "Pack latest version", - "type": "string" - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "name": { - "description": "Pack registry name", - "type": "string" - }, - "scope": { - "description": "Pack registry scope", - "type": "string" - }, - "uid": { - "description": "Pack registry uid", - "type": "string" - } - } - }, - "v1RegistrySyncStatus": { - "description": "Status of the registry sync", - "type": "object", - "properties": { - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSyncedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "status": { - "type": "string" - } - } - }, - "v1RelatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ReleaseDescription": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ReleaseVersion": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - }, - "v1ResourceCloudCostSummary": { - "description": "Resource cloud cost summary information", - "type": "object", - "properties": { - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cloud cost data point information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "total": { - "description": "Resource total cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1ResourceConsumption": { - "description": "Resource consumption information", - "type": "object", - "properties": { - "associatedResources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Resource cosumption data point", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "total": { - "description": "Resource total cosumption data", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ResourceConsumptionData": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ResourceConsumptionDataPoint": { - "description": "Resource cosumption data point", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1ResourceConsumptionFilter": { - "description": "Resource consumption filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "includeControlPlaneMachines": { - "type": "boolean" - }, - "includeMasterMachines": { - "description": "Deprecated. Use includeControlPlaneMachines", - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1ResourceConsumptionOptions": { - "description": "Resource consumption options", - "type": "object", - "properties": { - "enableSummaryView": { - "type": "boolean", - "default": true - }, - "groupBy": { - "type": "string", - "default": "namespace", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "cloud" - ] - }, - "period": { - "type": "integer", - "format": "int32", - "default": 60 - } - } - }, - "v1ResourceConsumptionSpec": { - "description": "Resource consumption spec", - "type": "object", - "properties": { - "filter": { - "description": "Resource consumption filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "includeControlPlaneMachines": { - "type": "boolean" - }, - "includeMasterMachines": { - "description": "Deprecated. Use includeControlPlaneMachines", - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "options": { - "description": "Resource consumption options", - "type": "object", - "properties": { - "enableSummaryView": { - "type": "boolean", - "default": true - }, - "groupBy": { - "type": "string", - "default": "namespace", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "cloud" - ] - }, - "period": { - "type": "integer", - "format": "int32", - "default": 60 - } - } - } - } - }, - "v1ResourceCost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ResourceCostDataPoint": { - "description": "Resource cost data point", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ResourceCostSummary": { - "description": "Resource cost summary information", - "type": "object", - "properties": { - "associatedResources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Resource cost data point", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "total": { - "description": "Resource total cost information", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1ResourceCostSummaryFilter": { - "description": "Resource cost summary filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "includeControlPlaneMachines": { - "type": "boolean" - }, - "includeMasterMachines": { - "description": "Deprecated. Use includeControlPlaneMachines", - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1ResourceCostSummaryOptions": { - "description": "Resource cost summary options", - "type": "object", - "properties": { - "enableSummaryView": { - "type": "boolean", - "default": true - }, - "groupBy": { - "type": "string", - "default": "cluster", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "deployment", - "cloud" - ] - }, - "period": { - "type": "integer", - "format": "int32", - "default": 60 - } - } - }, - "v1ResourceCostSummarySpec": { - "description": "Resource cost summary spec", - "type": "object", - "properties": { - "filter": { - "description": "Resource cost summary filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "includeControlPlaneMachines": { - "type": "boolean" - }, - "includeMasterMachines": { - "description": "Deprecated. Use includeControlPlaneMachines", - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "options": { - "description": "Resource cost summary options", - "type": "object", - "properties": { - "enableSummaryView": { - "type": "boolean", - "default": true - }, - "groupBy": { - "type": "string", - "default": "cluster", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "deployment", - "cloud" - ] - }, - "period": { - "type": "integer", - "format": "int32", - "default": 60 - } - } - } - } - }, - "v1ResourceEntity": { - "type": "object", - "properties": { - "checks": { - "type": "array", - "items": { - "type": "string" - } - }, - "data": { - "type": "object", - "additionalProperties": { - "type": "object" - } - } - } - }, - "v1ResourceGroup": { - "description": "Azure resource Group is a container that holds related resources for an Azure solution", - "type": "object", - "properties": { - "id": { - "description": "The ID of the resource group", - "type": "string" - }, - "location": { - "description": "The location of the resource group. It cannot be changed after the resource group has been created", - "type": "string" - }, - "name": { - "description": "The type of the resource group", - "type": "string" - } - } - }, - "v1ResourceLimitType": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "v1ResourceReference": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1ResourceRoles": { - "type": "object", - "properties": { - "resourceRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1ResourceRolesEntity": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - }, - "v1ResourceRolesUpdateEntity": { - "type": "object", - "properties": { - "filterRefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "projectUids": { - "type": "array", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1ResourceTotalCloudCost": { - "description": "Resource total cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ResourceTotalConsumptionData": { - "description": "Resource total cosumption data", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1ResourceTotalCost": { - "description": "Resource total cost information", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1ResourceUsage": { - "description": "ResourceUsage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1ResourceUsageDataPoint": { - "description": "Resource usage data point", - "type": "object", - "properties": { - "baremetal": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "edgehost": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - } - } - }, - "v1ResourceUsageMeteringDataPoint": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "v1ResourceUsageSummary": { - "description": "Resource usage summary information", - "type": "object", - "properties": { - "associatedResources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Resource usage data point", - "type": "object", - "properties": { - "baremetal": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "edgehost": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1ResourceUsageSummaryFilter": { - "description": "Resource usage summary filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "includeControlPlaneMachines": { - "type": "boolean" - }, - "includeMasterMachines": { - "description": "Deprecated. Use includeControlPlaneMachines", - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "pods": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workload": { - "description": "Workload resource filter", - "type": "object", - "properties": { - "names": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "type": { - "type": "string", - "default": "all", - "enum": [ - "deployment", - "statefulset", - "daemonset", - "all" - ] - } - } - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1ResourceUsageSummaryOptions": { - "description": "Resource usage summary options", - "type": "object", - "properties": { - "enableSummaryView": { - "type": "boolean", - "default": true - }, - "groupBy": { - "type": "string", - "default": "cluster", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "deployment", - "statefulset", - "daemonset", - "pod", - "cloud" - ] - }, - "includeMeteringInfo": { - "type": "boolean", - "default": false - }, - "period": { - "type": "integer", - "format": "int32", - "default": 60 - } - } - }, - "v1ResourceUsageSummarySpec": { - "description": "Resource usage summary spec", - "type": "object", - "properties": { - "filter": { - "description": "Resource usage summary filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "includeControlPlaneMachines": { - "type": "boolean" - }, - "includeMasterMachines": { - "description": "Deprecated. Use includeControlPlaneMachines", - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "pods": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workload": { - "description": "Workload resource filter", - "type": "object", - "properties": { - "names": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "type": { - "type": "string", - "default": "all", - "enum": [ - "deployment", - "statefulset", - "daemonset", - "all" - ] - } - } - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "options": { - "description": "Resource usage summary options", - "type": "object", - "properties": { - "enableSummaryView": { - "type": "boolean", - "default": true - }, - "groupBy": { - "type": "string", - "default": "cluster", - "enum": [ - "tenant", - "project", - "workspace", - "cluster", - "namespace", - "deployment", - "statefulset", - "daemonset", - "pod", - "cloud" - ] - }, - "includeMeteringInfo": { - "type": "boolean", - "default": false - }, - "period": { - "type": "integer", - "format": "int32", - "default": 60 - } - } - } - } - }, - "v1ResourceWorkloadFilter": { - "description": "Workload resource filter", - "type": "object", - "properties": { - "names": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "type": { - "type": "string", - "default": "all", - "enum": [ - "deployment", - "statefulset", - "daemonset", - "all" - ] - } - } - }, - "v1Resources": { - "type": "object", - "properties": { - "resources": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "checks": { - "type": "array", - "items": { - "type": "string" - } - }, - "data": { - "type": "object", - "additionalProperties": { - "type": "object" - } - } - } - } - } - } - }, - "v1ResourcesCloudCostSummary": { - "description": "Resources cloud cost summary information", - "type": "object", - "properties": { - "resources": { - "type": "array", - "items": { - "description": "Resource cloud cost summary information", - "type": "object", - "properties": { - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cloud cost data point information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "total": { - "description": "Resource total cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "total": { - "description": "Resource total cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1ResourcesConsumption": { - "description": "Resources consumption information", - "type": "object", - "properties": { - "cpuUnit": { - "type": "string" - }, - "memoryUnit": { - "type": "string" - }, - "resources": { - "type": "array", - "items": { - "description": "Resource consumption information", - "type": "object", - "properties": { - "associatedResources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Resource cosumption data point", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "total": { - "description": "Resource total cosumption data", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "total": { - "description": "Resource total cosumption data", - "type": "object", - "properties": { - "allotted": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "usage": { - "description": "Resource cosumption data", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1ResourcesCostSummary": { - "description": "Resources cost summary information", - "type": "object", - "properties": { - "resources": { - "type": "array", - "items": { - "description": "Resource cost summary information", - "type": "object", - "properties": { - "associatedResources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Resource cost data point", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "total": { - "description": "Resource total cost information", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "total": { - "description": "Resource total cost information", - "type": "object", - "properties": { - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1ResourcesUsageSummary": { - "description": "Resources usage summary information", - "type": "object", - "properties": { - "cpuUnit": { - "type": "string" - }, - "memoryUnit": { - "type": "string" - }, - "resources": { - "type": "array", - "items": { - "description": "Resource usage summary information", - "type": "object", - "properties": { - "associatedResources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "data": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Resource usage data point", - "type": "object", - "properties": { - "baremetal": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "cpu": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "edgehost": { - "description": "min and max count for machines \u0026 edgehost for the given period", - "type": "object", - "properties": { - "activeEdgehosts": { - "type": "number", - "format": "int64" - }, - "activeMachines": { - "type": "number", - "format": "int64" - }, - "maxEdgehosts": { - "type": "number", - "format": "int64" - }, - "maxMachines": { - "type": "number", - "format": "int64" - } - } - }, - "memory": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - } - } - } - }, - "entity": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1RestoreStatusMeta": { - "description": "Restore status meta", - "properties": { - "isSucceeded": { - "type": "boolean" - }, - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1Role": { - "description": "Role", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Role specifications", - "properties": { - "permissions": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - }, - "type": { - "type": "string", - "enum": [ - "system", - "user" - ] - } - } - }, - "status": { - "description": "Role status", - "properties": { - "isEnabled": { - "description": "Specifies if role account is enabled/disabled", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1RoleClone": { - "description": "Role clone specifications", - "properties": { - "metadata": { - "description": "Role clone metadata", - "properties": { - "name": { - "type": "string" - } - } - } - } - }, - "v1RoleCloneMetadata": { - "description": "Role clone metadata", - "properties": { - "name": { - "type": "string" - } - } - }, - "v1RolePatch": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - }, - "v1RoleSpec": { - "description": "Role specifications", - "properties": { - "permissions": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - }, - "type": { - "type": "string", - "enum": [ - "system", - "user" - ] - } - } - }, - "v1RoleStatus": { - "description": "Role status", - "properties": { - "isEnabled": { - "description": "Specifies if role account is enabled/disabled", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1Roles": { - "description": "Array of Roles", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Role", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Role specifications", - "properties": { - "permissions": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - }, - "type": { - "type": "string", - "enum": [ - "system", - "user" - ] - } - } - }, - "status": { - "description": "Role status", - "properties": { - "isEnabled": { - "description": "Specifies if role account is enabled/disabled", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1S3StorageConfig": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "v1SchedulerJob": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cycles": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - } - } - }, - "status": { - "type": "object", - "properties": { - "cycleNumber": { - "type": "integer", - "x-omitempty": false - }, - "error": { - "type": "string", - "x-omitempty": false - }, - "forceNextRun": { - "type": "boolean", - "x-omitempty": false - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isDisabled": { - "type": "boolean", - "x-omitempty": false - }, - "isLocked": { - "type": "boolean", - "x-omitempty": false - }, - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSuccessfulRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "nextRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1SchedulerJobs": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cycles": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - } - } - }, - "status": { - "type": "object", - "properties": { - "cycleNumber": { - "type": "integer", - "x-omitempty": false - }, - "error": { - "type": "string", - "x-omitempty": false - }, - "forceNextRun": { - "type": "boolean", - "x-omitempty": false - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isDisabled": { - "type": "boolean", - "x-omitempty": false - }, - "isLocked": { - "type": "boolean", - "x-omitempty": false - }, - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSuccessfulRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "nextRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "v1SchedulerJobsHealth": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cycles": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - } - } - }, - "status": { - "type": "object", - "properties": { - "cycleNumber": { - "type": "integer", - "x-omitempty": false - }, - "error": { - "type": "string", - "x-omitempty": false - }, - "forceNextRun": { - "type": "boolean", - "x-omitempty": false - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "isDisabled": { - "type": "boolean", - "x-omitempty": false - }, - "isLocked": { - "type": "boolean", - "x-omitempty": false - }, - "lastRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSuccessfulRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "nextRunTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "v1Scope": { - "type": "string", - "enum": [ - "system", - "tenant", - "project", - "resource" - ] - }, - "v1SearchFilterBoolCondition": { - "properties": { - "value": { - "type": "boolean" - } - } - }, - "v1SearchFilterCondition": { - "properties": { - "bool": { - "properties": { - "value": { - "type": "boolean" - } - } - }, - "date": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - } - } - }, - "float": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "int": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "keyValue": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "string": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - } - } - }, - "v1SearchFilterConjunctionOperator": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "v1SearchFilterDateCondition": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - } - } - }, - "v1SearchFilterDateConditionMatch": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "v1SearchFilterDateOperator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - }, - "v1SearchFilterFloatCondition": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "v1SearchFilterFloatConditionMatch": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "v1SearchFilterGroup": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "condition": { - "properties": { - "bool": { - "properties": { - "value": { - "type": "boolean" - } - } - }, - "date": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - } - } - }, - "float": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "int": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "keyValue": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "string": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - } - } - }, - "property": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "string", - "int", - "float", - "bool", - "date", - "keyValue" - ] - } - } - } - } - } - }, - "v1SearchFilterIntegerCondition": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "v1SearchFilterIntegerConditionMatch": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "v1SearchFilterIntegerOperator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - }, - "v1SearchFilterItem": { - "properties": { - "condition": { - "properties": { - "bool": { - "properties": { - "value": { - "type": "boolean" - } - } - }, - "date": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - } - } - }, - "float": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "int": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "keyValue": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "string": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - } - } - }, - "property": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "string", - "int", - "float", - "bool", - "date", - "keyValue" - ] - } - } - }, - "v1SearchFilterKeyValueCondition": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "v1SearchFilterKeyValueConditionMatch": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1SearchFilterKeyValueOperator": { - "type": "string", - "enum": [ - "eq" - ] - }, - "v1SearchFilterPropertyType": { - "type": "string", - "enum": [ - "string", - "int", - "float", - "bool", - "date", - "keyValue" - ] - }, - "v1SearchFilterSchemaSpec": { - "properties": { - "schema": { - "properties": { - "properties": { - "type": "array", - "items": { - "properties": { - "default": { - "type": "string", - "x-order": 6 - }, - "displayName": { - "type": "string", - "x-order": 2 - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": true, - "x-order": 4 - }, - "enumValues": { - "type": "array", - "items": { - "properties": { - "displayValue": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "x-omitempty": true, - "x-order": 5 - }, - "hideDisplay": { - "type": "boolean", - "x-order": 1 - }, - "maxFloatVal": { - "type": "number", - "format": "float64", - "x-order": 10 - }, - "maxIntVal": { - "type": "integer", - "format": "int32", - "x-order": 8 - }, - "minFloatVal": { - "type": "number", - "format": "float64", - "x-order": 9 - }, - "minIntVal": { - "type": "integer", - "format": "int32", - "x-order": 7 - }, - "name": { - "type": "string", - "x-order": 0 - }, - "type": { - "type": "string", - "x-order": 3 - } - } - } - } - } - } - } - }, - "v1SearchFilterSchemaSpecEnumValue": { - "properties": { - "displayValue": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "v1SearchFilterSchemaSpecProperties": { - "properties": { - "properties": { - "type": "array", - "items": { - "properties": { - "default": { - "type": "string", - "x-order": 6 - }, - "displayName": { - "type": "string", - "x-order": 2 - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": true, - "x-order": 4 - }, - "enumValues": { - "type": "array", - "items": { - "properties": { - "displayValue": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "x-omitempty": true, - "x-order": 5 - }, - "hideDisplay": { - "type": "boolean", - "x-order": 1 - }, - "maxFloatVal": { - "type": "number", - "format": "float64", - "x-order": 10 - }, - "maxIntVal": { - "type": "integer", - "format": "int32", - "x-order": 8 - }, - "minFloatVal": { - "type": "number", - "format": "float64", - "x-order": 9 - }, - "minIntVal": { - "type": "integer", - "format": "int32", - "x-order": 7 - }, - "name": { - "type": "string", - "x-order": 0 - }, - "type": { - "type": "string", - "x-order": 3 - } - } - } - } - } - }, - "v1SearchFilterSchemaSpecProperty": { - "properties": { - "default": { - "type": "string", - "x-order": 6 - }, - "displayName": { - "type": "string", - "x-order": 2 - }, - "enum": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": true, - "x-order": 4 - }, - "enumValues": { - "type": "array", - "items": { - "properties": { - "displayValue": { - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "x-omitempty": true, - "x-order": 5 - }, - "hideDisplay": { - "type": "boolean", - "x-order": 1 - }, - "maxFloatVal": { - "type": "number", - "format": "float64", - "x-order": 10 - }, - "maxIntVal": { - "type": "integer", - "format": "int32", - "x-order": 8 - }, - "minFloatVal": { - "type": "number", - "format": "float64", - "x-order": 9 - }, - "minIntVal": { - "type": "integer", - "format": "int32", - "x-order": 7 - }, - "name": { - "type": "string", - "x-order": 0 - }, - "type": { - "type": "string", - "x-order": 3 - } - } - }, - "v1SearchFilterSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "environment", - "clusterName", - "clusterState", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1SearchFilterSpec": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filterGroups": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "condition": { - "properties": { - "bool": { - "properties": { - "value": { - "type": "boolean" - } - } - }, - "date": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - } - } - }, - "float": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "int": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "keyValue": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "string": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - } - } - }, - "property": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "string", - "int", - "float", - "bool", - "date", - "keyValue" - ] - } - } - } - } - } - } - } - } - }, - "v1SearchFilterStringCondition": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "v1SearchFilterStringConditionMatch": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1SearchFilterStringOperator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - }, - "v1SearchFilterSummarySpec": { - "description": "Spectro cluster search filter summary spec", - "properties": { - "filter": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filterGroups": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "condition": { - "properties": { - "bool": { - "properties": { - "value": { - "type": "boolean" - } - } - }, - "date": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte", - "range" - ] - } - } - }, - "float": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "number", - "format": "float64" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "int": { - "properties": { - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "integer" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "gt", - "gte", - "lt", - "lte" - ] - } - } - }, - "keyValue": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - }, - "string": { - "properties": { - "ignoreCase": { - "type": "boolean" - }, - "match": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq", - "contains", - "beginsWith" - ] - } - } - } - } - }, - "property": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "string", - "int", - "float", - "bool", - "date", - "keyValue" - ] - } - } - } - } - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "environment", - "clusterName", - "clusterState", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1SearchSortFields": { - "type": "string", - "enum": [ - "environment", - "clusterName", - "clusterState", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1SectroClusterK8sDashboardUrl": { - "description": "Service version information", - "type": "object", - "properties": { - "url": { - "type": "string" - } - } - }, - "v1ServiceEncryptionKey": { - "description": "Returns the data encryption key for the session", - "type": "object", - "properties": { - "encryptionKey": { - "description": "Encryption key to be used to decrypt the encrypted data in the response", - "type": "string" - } - } - }, - "v1ServiceImage": { - "description": "Service image entity", - "type": "object", - "properties": { - "buildId": { - "type": "string" - }, - "image": { - "type": "string" - }, - "serviceName": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ServiceManifest": { - "description": "Service manifest information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "manifests": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "repoName": { - "type": "string" - }, - "sha": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - }, - "v1ServiceManifestSpec": { - "type": "object", - "properties": { - "manifests": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "repoName": { - "type": "string" - }, - "sha": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ServicePort": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - }, - "v1ServiceSpec": { - "description": "ServiceSpec defines the specification of service registering edge", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1ServiceVersion": { - "description": "Service version information", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "latestVersion": { - "type": "object", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "repoName": { - "type": "string" - }, - "sha": { - "type": "string" - } - } - }, - "name": { - "type": "string" - } - } - } - } - }, - "v1ServiceVersionSpec": { - "type": "object", - "properties": { - "latestVersion": { - "type": "object", - "properties": { - "content": { - "type": "string" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "repoName": { - "type": "string" - }, - "sha": { - "type": "string" - } - } - }, - "name": { - "type": "string" - } - } - }, - "v1ServicesImages": { - "type": "object", - "properties": { - "serviceImages": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Service image entity", - "type": "object", - "properties": { - "buildId": { - "type": "string" - }, - "image": { - "type": "string" - }, - "serviceName": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1SonobuoyEntity": { - "description": "Sonobuoy response", - "required": [ - "requestUid", - "status", - "reports" - ], - "properties": { - "reports": { - "type": "object", - "additionalProperties": { - "description": "Sonobuoy report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Sonobuoy log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - }, - "v1SonobuoyLog": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1SonobuoyLogEntity": { - "description": "Sonobuoy log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1SonobuoyReport": { - "description": "Compliance Scan Sonobuoy Report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Compliance Scan Sonobuoy Log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - }, - "v1SonobuoyReportEntity": { - "description": "Sonobuoy report", - "properties": { - "fail": { - "type": "integer", - "format": "int32" - }, - "logs": { - "type": "array", - "items": { - "description": "Sonobuoy log", - "properties": { - "description": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "output": { - "type": "string" - }, - "path": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "node": { - "type": "string" - }, - "pass": { - "type": "integer", - "format": "int32" - }, - "plugin": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "type": "integer", - "format": "int32" - } - } - }, - "v1SortOrder": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - }, - "v1SpcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "v1SpcApplySettings": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - } - } - }, - "v1SpcPatchTimeEntity": { - "type": "object", - "properties": { - "clusterHash": { - "type": "string" - }, - "patchTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SpectroAppMgmtUpgrade": { - "description": "Spectro application management upgrade information", - "type": "object", - "required": [ - "version" - ], - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile notification update request payload", - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack input entity with values to overwrite and manifests for the intial creation", - "type": "object", - "required": [ - "name" - ], - "properties": { - "layer": { - "description": "Pack layer", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "tag": { - "description": "Pack tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "uid": { - "description": "Pack uid", - "type": "string" - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - }, - "v1SpectroAwsClusterEntity": { - "description": "AWS cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "clusterType": { - "type": "string", - "default": "PureManage", - "enum": [ - "PureManage", - "PureAttach" - ] - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroAwsClusterImportEntity": { - "description": "Spectro AWS cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroAwsClusterRateEntity": { - "description": "Spectro AWS cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalSecurityGroups": { - "description": "Additional Security groups", - "type": "array", - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroAzureClusterEntity": { - "description": "Azure cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "subscriptionId", - "location", - "sshKey" - ], - "properties": { - "aadProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "apiServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "containerName": { - "type": "string" - }, - "controlPlaneSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "enablePrivateCluster": { - "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", - "type": "boolean" - }, - "infraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "location": { - "description": "Location is the Azure datacenter location", - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sshKey": { - "type": "string" - }, - "storageAccountName": { - "type": "string" - }, - "subscriptionId": { - "description": "Subscription ID is unique identifier for the subscription used to access Azure services", - "type": "string" - }, - "vnetCidrBlock": { - "type": "string" - }, - "vnetName": { - "description": "VNETName is the virtual network in which the cluster is to be provisioned.", - "type": "string" - }, - "vnetResourceGroup": { - "type": "string" - }, - "workerSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - } - } - }, - "managedPoolConfig": { - "type": "object", - "properties": { - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroAzureClusterImportEntity": { - "description": "Spectro Azure cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroAzureClusterRateEntity": { - "description": "Spectro Azure cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "subscriptionId", - "location", - "sshKey" - ], - "properties": { - "aadProfile": { - "description": "AADProfile - AAD integration is managed by AKS.", - "type": "object", - "required": [ - "managed", - "adminGroupObjectIDs" - ], - "properties": { - "adminGroupObjectIDs": { - "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", - "type": "array", - "items": { - "type": "string" - } - }, - "managed": { - "description": "Managed - Whether to enable managed AAD.", - "type": "boolean", - "x-omitempty": false - } - } - }, - "apiServerAccessProfile": { - "description": "APIServerAccessProfile - access profile for AKS API server.", - "type": "object", - "properties": { - "authorizedIPRanges": { - "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", - "type": "boolean" - }, - "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", - "type": "boolean" - }, - "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", - "type": "string" - } - } - }, - "containerName": { - "type": "string" - }, - "controlPlaneSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "enablePrivateCluster": { - "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", - "type": "boolean" - }, - "infraLBConfig": { - "type": "object", - "properties": { - "apiServerLB": { - "description": "LoadBalancerSpec defines an Azure load balancer.", - "type": "object", - "properties": { - "apiServerLBStaticIP": { - "type": "string" - }, - "ipAllocationMethod": { - "type": "string", - "default": "Dynamic", - "enum": [ - "Static", - "Dynamic" - ] - }, - "privateDNSName": { - "type": "string" - }, - "type": { - "description": "Load Balancer type", - "type": "string", - "default": "Public", - "enum": [ - "Internal", - "Public" - ] - } - } - } - } - }, - "location": { - "description": "Location is the Azure datacenter location", - "type": "string" - }, - "resourceGroup": { - "type": "string" - }, - "sshKey": { - "type": "string" - }, - "storageAccountName": { - "type": "string" - }, - "subscriptionId": { - "description": "Subscription ID is unique identifier for the subscription used to access Azure services", - "type": "string" - }, - "vnetCidrBlock": { - "type": "string" - }, - "vnetName": { - "description": "VNETName is the virtual network in which the cluster is to be provisioned.", - "type": "string" - }, - "vnetResourceGroup": { - "type": "string" - }, - "workerSubnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "Instance type stands for VMSize in Azure", - "type": "string" - }, - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean" - }, - "osDisk": { - "type": "object", - "properties": { - "diskSizeGB": { - "type": "integer", - "format": "int32" - }, - "managedDisk": { - "type": "object", - "properties": { - "storageAccountType": { - "type": "string" - } - } - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - } - } - }, - "managedPoolConfig": { - "type": "object", - "properties": { - "isSystemNodePool": { - "description": "whether this pool is for system node Pool", - "type": "boolean", - "x-omitempty": false - }, - "osType": { - "type": "string", - "default": "Linux", - "enum": [ - "Linux", - "Windows" - ] - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroCluster": { - "description": "SpectroCluster is the Schema for the spectroclusters 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SpectroClusterSpec defines the desired state of SpectroCluster", - "type": "object", - "properties": { - "cloudConfigRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "cloudType": { - "type": "string" - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute contains additional cluster metadata information.", - "type": "string" - }, - "clusterRbac": { - "description": "Deprecated. Use clusterResources", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "machineHealthConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", - "type": "boolean" - } - } - }, - "clusterProfileTemplates": { - "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterType": { - "type": "string", - "enum": [ - "PureManage", - "AlloyMonitor", - "AlloyAssist", - "AlloyExtend" - ] - } - } - }, - "status": { - "description": "SpectroClusterStatus", - "type": "object", - "properties": { - "abortTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "addOnServices": { - "type": "array", - "items": { - "description": "Spectro cluster addon service", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "apiEndpoints": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "spcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterActiveAppDeployment": { - "description": "Active app deployment", - "type": "object", - "properties": { - "appRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1SpectroClusterActiveCluster": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1SpectroClusterActiveResources": { - "description": "Active cluster resources", - "type": "object", - "properties": { - "appDeployments": { - "type": "array", - "items": { - "description": "Active app deployment", - "type": "object", - "properties": { - "appRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "clusters": { - "type": "array", - "items": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - }, - "virtualClusters": { - "type": "array", - "items": { - "description": "Active clusters", - "type": "object", - "properties": { - "clusterRef": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterAddOnService": { - "description": "Spectro cluster addon service", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1SpectroClusterAddOnServiceSummary": { - "description": "Spectro cluster status summary", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "v1SpectroClusterAssetEntity": { - "description": "Cluster asset", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "frpKubeconfig": { - "type": "string" - }, - "kubeconfig": { - "type": "string" - }, - "kubeconfigclient": { - "type": "string" - }, - "manifest": { - "type": "string" - } - } - } - } - }, - "v1SpectroClusterAssetFrpKubeConfig": { - "description": "Cluster asset Frp Kube Config", - "type": "object", - "properties": { - "frpKubeconfig": { - "type": "string" - } - } - }, - "v1SpectroClusterAssetKubeConfig": { - "description": "Cluster asset Kube Config", - "type": "object", - "properties": { - "kubeconfig": { - "type": "string" - } - } - }, - "v1SpectroClusterAssetKubeConfigClient": { - "description": "Cluster asset Kube Config Client", - "type": "object", - "properties": { - "kubeconfigclient": { - "type": "string" - } - } - }, - "v1SpectroClusterAssetManifest": { - "description": "Cluster asset", - "type": "object", - "properties": { - "manifest": { - "type": "string" - } - } - }, - "v1SpectroClusterCloudCost": { - "description": "Spectro cluster cloud cost information", - "type": "object", - "properties": { - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "data": { - "type": "array", - "items": { - "description": "Cloud cost data point information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "v1SpectroClusterCloudCostSummaryFilter": { - "description": "Spectro cluster cloud cost summary filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1SpectroClusterCloudCostSummaryOptions": { - "description": "Spectro cluster cloud cost summary options", - "type": "object", - "properties": { - "groupBy": { - "type": "string", - "default": "project", - "enum": [ - "tenant", - "project", - "cloud", - "cluster" - ] - }, - "period": { - "type": "integer", - "format": "int32", - "default": 1440 - } - } - }, - "v1SpectroClusterCloudCostSummarySpec": { - "description": "Spectro cluster cloud cost summary spec", - "type": "object", - "properties": { - "filter": { - "description": "Spectro cluster cloud cost summary filter", - "type": "object", - "properties": { - "clouds": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "options": { - "description": "Spectro cluster cloud cost summary options", - "type": "object", - "properties": { - "groupBy": { - "type": "string", - "default": "project", - "enum": [ - "tenant", - "project", - "cloud", - "cluster" - ] - }, - "period": { - "type": "integer", - "format": "int32", - "default": 1440 - } - } - } - } - }, - "v1SpectroClusterCost": { - "description": "Spectro cluster cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Spectro cluster cloud cost information", - "type": "object", - "properties": { - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "data": { - "type": "array", - "items": { - "description": "Cloud cost data point information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1SpectroClusterCostSummary": { - "type": "object", - "properties": { - "cluster": { - "description": "Spectro cluster cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Spectro cluster cloud cost information", - "type": "object", - "properties": { - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "data": { - "type": "array", - "items": { - "description": "Cloud cost data point information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "timestamp": { - "type": "number", - "format": "int64" - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "period": { - "type": "integer", - "format": "int32" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SpectroClusterFilterSpec": { - "description": "Spectro cluster filter spec", - "properties": { - "cloudAccounts": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "clusterProfiles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "clusterStates": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - } - }, - "cpuUsage": { - "type": "object", - "properties": { - "eq": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "gt": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "gte": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "lt": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "lte": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "ne": { - "type": "integer", - "format": "int32", - "x-nullable": true - } - } - }, - "environment": { - "description": "Deprecated. Use environments", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "environments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "healthState": { - "type": "string", - "default": "all", - "enum": [ - "all", - "Healthy", - "UnHealthy" - ] - }, - "isDeleted": { - "type": "boolean", - "default": false - }, - "isHostCluster": { - "type": "boolean", - "default": false, - "x-omitempty": false - }, - "memoryUsage": { - "type": "object", - "properties": { - "eq": { - "type": "number", - "x-nullable": true - }, - "gt": { - "type": "number", - "x-nullable": true - }, - "gte": { - "type": "number", - "x-nullable": true - }, - "lt": { - "type": "number", - "x-nullable": true - }, - "lte": { - "type": "number", - "x-nullable": true - }, - "ne": { - "type": "number", - "x-nullable": true - } - } - }, - "metricPeriod": { - "description": "Metric period in minutes defines latest metrics by period", - "type": "integer", - "format": "int32", - "default": 60 - }, - "projectUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - } - } - }, - "v1SpectroClusterHealthCheck": { - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "ownerName": { - "type": "string" - }, - "ownerUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "status": { - "type": "object", - "properties": { - "machineHealthChecks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "msgBrokerHealthChecks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "spectroClusterHealthChecks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SpectroClusterHealthCheckSpec": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "ownerName": { - "type": "string" - }, - "ownerUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1SpectroClusterHealthCheckStatus": { - "type": "object", - "properties": { - "machineHealthChecks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "msgBrokerHealthChecks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "spectroClusterHealthChecks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isHealthy": { - "type": "boolean", - "x-omitempty": false - }, - "message": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterHealthCondition": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - }, - "v1SpectroClusterHealthStatus": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "v1SpectroClusterKubeCtlRedirect": { - "description": "Active resources of tenant", - "type": "object", - "properties": { - "redirectUri": { - "type": "string" - } - } - }, - "v1SpectroClusterLocationInputEntity": { - "description": "Cluster location", - "type": "object", - "properties": { - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - } - } - }, - "v1SpectroClusterMetaSummary": { - "description": "Spectro cluster meta summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Spectro cluster meta summary", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the cluster", - "type": "array", - "items": { - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - } - }, - "cloudAccountUid": { - "type": "string" - }, - "cloudRegion": { - "type": "string" - }, - "cloudType": { - "type": "string" - }, - "clusterType": { - "type": "string" - }, - "importMode": { - "type": "string" - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Spectro cluster meta status summary", - "properties": { - "cost": { - "description": "Cluster meta Cost information", - "type": "object", - "properties": { - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Cluster meta health information", - "type": "object", - "properties": { - "isHeartBeatFailed": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "type": "string" - } - } - }, - "state": { - "type": "string" - }, - "updates": { - "description": "Cluster meta updates information", - "type": "object", - "properties": { - "isUpdatesPending": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - }, - "v1SpectroClusterMetadataFilterSpec": { - "description": "Spectro cluster filter spec", - "properties": { - "environment": { - "type": "string" - }, - "includeVirtual": { - "type": "boolean", - "default": false - }, - "isAlloy": { - "description": "isAlloy is renamed to isImported", - "type": "boolean", - "default": false - }, - "isImportReadOnly": { - "type": "boolean", - "default": true - }, - "isImported": { - "type": "boolean", - "default": false - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "state": { - "type": "string" - } - } - }, - "v1SpectroClusterMetadataSpec": { - "description": "Spectro cluster metadata spec", - "properties": { - "filter": { - "description": "Spectro cluster filter spec", - "properties": { - "environment": { - "type": "string" - }, - "includeVirtual": { - "type": "boolean", - "default": false - }, - "isAlloy": { - "description": "isAlloy is renamed to isImported", - "type": "boolean", - "default": false - }, - "isImportReadOnly": { - "type": "boolean", - "default": true - }, - "isImported": { - "type": "boolean", - "default": false - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "state": { - "type": "string" - } - } - }, - "sort": { - "type": "string", - "enum": [ - "environment", - "state", - "name" - ], - "x-nullable": true - } - } - }, - "v1SpectroClusterMetrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroClusterMigration": { - "description": "Spectro cluster migration status", - "type": "object", - "properties": { - "database": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "tenant": { - "description": "Spectro tenant migration status", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroClusterOidcClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SpectroClusterOidcIssuerTlsSpec": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "v1SpectroClusterOidcSpec": { - "type": "object", - "properties": { - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "issuerTls": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - }, - "v1SpectroClusterPackCondition": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "ReadyForInstall", - "Installed", - "Ready", - "Error", - "UpgradeAvailable", - "WaitingForOtherLayers" - ] - } - } - }, - "v1SpectroClusterPackConfigList": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack configuration", - "type": "object", - "properties": { - "spec": { - "type": "object", - "properties": { - "associatedObject": { - "type": "string" - }, - "isValuesOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "digest": { - "type": "string" - }, - "isOverridden": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "parentUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "packUid": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SpectroClusterPackDiff": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - }, - "v1SpectroClusterPackProperties": { - "description": "Cluster pack properties response", - "type": "object", - "properties": { - "yaml": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SpectroClusterPackStatusEntity": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "ReadyForInstall", - "Installed", - "Ready", - "Error", - "UpgradeAvailable", - "WaitingForOtherLayers" - ] - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "profileUid": { - "description": "Cluster profile uid", - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "v1SpectroClusterPacksEntity": { - "description": "Cluster entity for pack refs validate", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterPacksStatusEntity": { - "type": "object", - "properties": { - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "ReadyForInstall", - "Installed", - "Ready", - "Error", - "UpgradeAvailable", - "WaitingForOtherLayers" - ] - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "profileUid": { - "description": "Cluster profile uid", - "type": "string" - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterPolicies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterProfile": { - "description": "Cluster profile response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster profile spec response", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile packs object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "version": { - "description": "Cluster profile version", - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1SpectroClusterProfileEntity": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterProfileList": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile response", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster profile spec response", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile packs object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "version": { - "description": "Cluster profile version", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - }, - "v1SpectroClusterProfileSpec": { - "description": "Cluster profile spec response", - "type": "object", - "properties": { - "cloudType": { - "description": "Cluster profile cloud type", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile packs object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack object", - "type": "object", - "properties": { - "addonSubType": { - "description": "Pack add-on sub type such as monitoring, db etc", - "type": "string" - }, - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "template": { - "description": "Pack template configuration", - "properties": { - "manifest": { - "description": "Pack template manifest content", - "type": "string" - }, - "parameters": { - "description": "Pack template parameters", - "properties": { - "inputParameters": { - "description": "Pack template input parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - }, - "outputParameters": { - "description": "Pack template output parameters array", - "type": "array", - "items": { - "description": "Pack template parameter", - "properties": { - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "displayName": { - "description": "Pack template parameter display name", - "type": "string" - }, - "format": { - "description": "Pack template parameter format", - "type": "string" - }, - "hidden": { - "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", - "type": "boolean" - }, - "listOptions": { - "description": "Pack template parameter list options as string array", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "Pack template parameter name", - "type": "string" - }, - "optional": { - "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", - "type": "boolean" - }, - "options": { - "description": "Pack template parameter options array", - "type": "object", - "additionalProperties": { - "description": "Pack template parameter option", - "type": "object", - "properties": { - "dependencies": { - "description": "Pack template parameter dependencies", - "type": "array", - "items": { - "description": "Pack template dependency", - "type": "object", - "properties": { - "layer": { - "description": "Pack template dependency pack layer", - "type": "string" - }, - "name": { - "description": "Pack template dependency pack name", - "type": "string" - }, - "readOnly": { - "description": "If true then dependency pack values can't be overridden", - "type": "boolean" - } - } - } - }, - "description": { - "description": "Pack template parameter description", - "type": "string" - }, - "label": { - "description": "Pack template parameter label", - "type": "string" - } - } - } - }, - "readOnly": { - "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", - "type": "boolean" - }, - "regex": { - "description": "Pack template parameter regex, if set then parameter value must match with specified regex", - "type": "string" - }, - "targetKey": { - "description": "Pack template parameter target key which is mapped to the key defined in the pack values", - "type": "string" - }, - "type": { - "description": "Pack template parameter data type", - "type": "string" - }, - "value": { - "description": "Pack template parameter value", - "type": "string" - } - } - } - } - } - }, - "values": { - "description": "Pack template values", - "type": "string" - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "version": { - "description": "Cluster profile version", - "type": "integer", - "format": "int32" - } - } - }, - "v1SpectroClusterProfileUpdates": { - "type": "object", - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "v1SpectroClusterProfileValidatorResponse": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - }, - "v1SpectroClusterProfiles": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - }, - "spcApplySettings": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - } - } - } - } - }, - "v1SpectroClusterProfilesDeleteEntity": { - "type": "object", - "properties": { - "profileUids": { - "description": "Cluster's profile uid list", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1SpectroClusterProfilesPacksManifests": { - "type": "object", - "required": [ - "profiles" - ], - "properties": { - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile pack manifests", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Pack manifests spec", - "type": "object", - "properties": { - "addonType": { - "description": "Pack add-on type such as logging, monitoring, security etc", - "type": "string" - }, - "annotations": { - "description": "Pack annotations is used to allow pack to add more arbitrary configurations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "cloudTypes": { - "description": "Pack supported cloud types", - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "description": "Pack digest", - "type": "string" - }, - "displayName": { - "description": "Pack display name", - "type": "string" - }, - "eol": { - "description": "Pack end of life, date format: yyyy-MM-dd", - "type": "string" - }, - "group": { - "description": "Pack group", - "type": "string" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logoUrl": { - "description": "Pack logo url", - "type": "string" - }, - "manifests": { - "description": "Pack manifests are additional content as part of the cluster profile", - "type": "array", - "items": { - "description": "Manifest object", - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "presets": { - "description": "Pack presets are the set of configurations applied on user selection of presets", - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "Pack registry uid", - "type": "string" - }, - "schema": { - "description": "Pack schema contains constraints such as data type, format, hints for the pack values", - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values", - "type": "string" - }, - "version": { - "description": "Pack version", - "type": "string" - } - } - }, - "status": { - "description": "Pack status", - "type": "object" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterProfilesParamReferenceEntity": { - "description": "Cluster profiles param reference entity", - "type": "object", - "properties": { - "references": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1SpectroClusterProfilesResolvedValues": { - "description": "Cluster profiles resolved values response", - "type": "object", - "properties": { - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile resolved pack values", - "properties": { - "resolved": { - "description": "Cluster profile pack resolved values", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterProjectCleanedResource": { - "description": "List of cleaned project spectro cluster resources", - "type": "object", - "properties": { - "resources": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1SpectroClusterProjectCleanupValidateEntity": { - "description": "Cluster duration thresholds", - "type": "object", - "properties": { - "deletingClusterDurationThresholdInMin": { - "type": "integer", - "format": "int32" - }, - "provisioningClusterDurationThresholdInMin": { - "type": "integer", - "format": "int32" - } - } - }, - "v1SpectroClusterRate": { - "description": "Cluster estimated rate information", - "type": "object", - "properties": { - "machinePools": { - "type": "array", - "items": { - "description": "Machine pool estimated rate information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "nodesCount": { - "type": "integer", - "format": "int32" - }, - "rate": { - "description": "Cloud estimated rate information", - "type": "object", - "properties": { - "compute": { - "description": "Compute estimated rate information", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "type": { - "type": "string" - } - } - }, - "storage": { - "type": "array", - "items": { - "description": "Storage estimated rate information", - "type": "object", - "properties": { - "iops": { - "type": "number", - "format": "float64" - }, - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "sizeGB": { - "type": "number", - "format": "float64" - }, - "throughput": { - "type": "number", - "format": "float64" - }, - "type": { - "type": "string" - } - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - } - }, - "name": { - "type": "string" - }, - "rate": { - "description": "Cluster total estimated rate information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "resourceMetadata": { - "description": "Cloud resource metadata", - "type": "object", - "properties": { - "instanceTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - }, - "storageTypes": { - "type": "object", - "additionalProperties": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterRepave": { - "description": "Spectro cluster repave status information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "reasons": { - "description": "Spectro cluster repave reasons", - "type": "array", - "items": { - "description": "Cluster repave reason description", - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "pack": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - } - }, - "source": { - "type": "string", - "enum": [ - "user", - "hubble", - "palette", - "stylus" - ] - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "status": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "repaveTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - } - } - }, - "v1SpectroClusterRepaveReason": { - "description": "Cluster repave reason description", - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "pack": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - }, - "v1SpectroClusterRepaveSpec": { - "type": "object", - "properties": { - "reasons": { - "description": "Spectro cluster repave reasons", - "type": "array", - "items": { - "description": "Cluster repave reason description", - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "pack": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - } - }, - "source": { - "type": "string", - "enum": [ - "user", - "hubble", - "palette", - "stylus" - ] - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "v1SpectroClusterRepaveStatus": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "repaveTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "v1SpectroClusterRepaveValidationResponse": { - "description": "Cluster repave validation response", - "type": "object", - "properties": { - "isRepaveRequired": { - "description": "If true then the pack changes can cause cluster repave", - "type": "boolean", - "x-omitempty": false - }, - "reasons": { - "type": "array", - "items": { - "description": "Cluster repave reason description", - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "pack": { - "description": "Cluster pack difference", - "type": "object", - "properties": { - "current": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - }, - "diffConfigKeys": { - "type": "array", - "items": { - "type": "string" - } - }, - "target": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterRevision": { - "description": "Revision specification details for a cluster", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SpectroClusterSpec defines the desired state of SpectroCluster", - "type": "object", - "properties": { - "cloudConfigRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "cloudType": { - "type": "string" - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute contains additional cluster metadata information.", - "type": "string" - }, - "clusterRbac": { - "description": "Deprecated. Use clusterResources", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "machineHealthConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", - "type": "boolean" - } - } - }, - "clusterProfileTemplates": { - "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterType": { - "type": "string", - "enum": [ - "PureManage", - "AlloyMonitor", - "AlloyAssist", - "AlloyExtend" - ] - } - } - } - } - }, - "v1SpectroClusterRevisionMeta": { - "description": "Revision spec uid along with the creationTimestamp for the revision", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "uid": { - "description": "The unique id of the spc revision document", - "type": "string" - } - } - }, - "v1SpectroClusterRevisionMetaList": { - "type": "object", - "properties": { - "spcRevisions": { - "type": "array", - "items": { - "description": "Revision spec uid along with the creationTimestamp for the revision", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "uid": { - "description": "The unique id of the spc revision document", - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterSortFields": { - "type": "string", - "enum": [ - "environment", - "clusterName", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "v1SpectroClusterSortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "environment", - "clusterName", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1SpectroClusterSpec": { - "description": "SpectroClusterSpec defines the desired state of SpectroCluster", - "type": "object", - "properties": { - "cloudConfigRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "cloudType": { - "type": "string" - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute contains additional cluster metadata information.", - "type": "string" - }, - "clusterRbac": { - "description": "Deprecated. Use clusterResources", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "machineHealthConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", - "type": "boolean" - } - } - }, - "clusterProfileTemplates": { - "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterType": { - "type": "string", - "enum": [ - "PureManage", - "AlloyMonitor", - "AlloyAssist", - "AlloyExtend" - ] - } - } - }, - "v1SpectroClusterState": { - "description": "Spectrocluster state entity", - "type": "object", - "properties": { - "state": { - "description": "Spectrocluster state", - "type": "string" - } - } - }, - "v1SpectroClusterStatus": { - "description": "SpectroClusterStatus", - "type": "object", - "properties": { - "abortTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "addOnServices": { - "type": "array", - "items": { - "description": "Spectro cluster addon service", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "apiEndpoints": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "spcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SpectroClusterStatusEntity": { - "description": "Spectrocluster status entity", - "type": "object", - "properties": { - "status": { - "description": "Spectrocluster state entity", - "type": "object", - "properties": { - "state": { - "description": "Spectrocluster state", - "type": "string" - } - } - } - } - }, - "v1SpectroClusterSummary": { - "description": "Spectro cluster summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Spectro cluster spec summary", - "type": "object", - "properties": { - "archTypes": { - "description": "Architecture type of the cluster", - "type": "array", - "items": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - }, - "cloudAccountMeta": { - "description": "Cloud account meta information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "cloudConfig": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "machinePools": { - "description": "Machine pool meta information", - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "healthy": { - "description": "number of healthy machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "infraProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "maintenanceMode": { - "description": "number of machines under maintenance", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - }, - "uid": { - "description": "Cluster's cloud config uid", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "hostClusterConfig": { - "properties": { - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - }, - "clusterProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Spectro cluster status summary", - "properties": { - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "hourlyRate": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "metrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "state": { - "type": "string" - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1SpectroClusterSummarySpec": { - "description": "Spectro cluster filter summary spec", - "properties": { - "filter": { - "description": "Spectro cluster filter spec", - "properties": { - "cloudAccounts": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterName": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "clusterProfiles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "clusterState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "clusterStates": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - } - }, - "cpuUsage": { - "type": "object", - "properties": { - "eq": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "gt": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "gte": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "lt": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "lte": { - "type": "integer", - "format": "int32", - "x-nullable": true - }, - "ne": { - "type": "integer", - "format": "int32", - "x-nullable": true - } - } - }, - "environment": { - "description": "Deprecated. Use environments", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "environments": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "healthState": { - "type": "string", - "default": "all", - "enum": [ - "all", - "Healthy", - "UnHealthy" - ] - }, - "isDeleted": { - "type": "boolean", - "default": false - }, - "isHostCluster": { - "type": "boolean", - "default": false, - "x-omitempty": false - }, - "memoryUsage": { - "type": "object", - "properties": { - "eq": { - "type": "number", - "x-nullable": true - }, - "gt": { - "type": "number", - "x-nullable": true - }, - "gte": { - "type": "number", - "x-nullable": true - }, - "lt": { - "type": "number", - "x-nullable": true - }, - "lte": { - "type": "number", - "x-nullable": true - }, - "ne": { - "type": "number", - "x-nullable": true - } - } - }, - "metricPeriod": { - "description": "Metric period in minutes defines latest metrics by period", - "type": "integer", - "format": "int32", - "default": 60 - }, - "projectUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "tags": { - "type": "object", - "properties": { - "beginsWith": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "eq": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "array", - "items": { - "type": "string" - }, - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "environment", - "clusterName", - "healthState", - "creationTimestamp", - "lastModifiedTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1SpectroClusterUidStatusSummary": { - "description": "Spectro cluster status summary", - "properties": { - "abortTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "addOnServices": { - "type": "array", - "items": { - "description": "Spectro cluster status summary", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "apiEndpoints": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "hourlyRate": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "kubeMeta": { - "description": "Spectro cluster kube meta", - "type": "object", - "properties": { - "hasKubeConfig": { - "type": "boolean", - "x-omitempty": false - }, - "hasKubeConfigClient": { - "type": "boolean", - "x-omitempty": false - }, - "hasManifest": { - "type": "boolean", - "x-omitempty": false - }, - "kubernetesVersion": { - "type": "string" - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "metrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "spcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "workspaces": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterUidSummary": { - "description": "Spectro cluster summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Spectro cluster spec summary", - "type": "object", - "properties": { - "archTypes": { - "description": "Architecture types of the cluster", - "type": "array", - "items": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - }, - "cloudConfig": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "machinePools": { - "description": "Machine pool meta information", - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "healthy": { - "description": "number of healthy machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "infraProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "maintenanceMode": { - "description": "number of machines under maintenance", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - }, - "uid": { - "description": "Cluster's cloud config uid", - "type": "string" - } - } - }, - "cloudaccount": { - "description": "Cloud account meta information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "clusterProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "status": { - "description": "Spectro cluster status summary", - "properties": { - "abortTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "addOnServices": { - "type": "array", - "items": { - "description": "Spectro cluster status summary", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "apiEndpoints": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "hourlyRate": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "kubeMeta": { - "description": "Spectro cluster kube meta", - "type": "object", - "properties": { - "hasKubeConfig": { - "type": "boolean", - "x-omitempty": false - }, - "hasKubeConfigClient": { - "type": "boolean", - "x-omitempty": false - }, - "hasManifest": { - "type": "boolean", - "x-omitempty": false - }, - "kubernetesVersion": { - "type": "string" - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "metrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "spcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "workspaces": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SpectroClusterUidUpgrades": { - "description": "Cluster status upgrades", - "type": "object", - "properties": { - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "v1SpectroClusterVMCloneEntity": { - "type": "object", - "required": [ - "cloneName" - ], - "properties": { - "annotationFilters": { - "description": "Annotation filters", - "type": "array", - "items": { - "type": "string" - } - }, - "cloneName": { - "description": "Cloning Virtual machine's name", - "type": "string" - }, - "labelFilters": { - "description": "Label filters", - "type": "array", - "items": { - "type": "string" - } - }, - "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" - } - } - }, - "v1SpectroClusterValidatorResponse": { - "description": "Cluster validator response", - "type": "object", - "properties": { - "machinePools": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "profiles": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster profile validator response", - "type": "object", - "properties": { - "packs": { - "description": "Constraint validator response", - "type": "object", - "properties": { - "results": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Constraint validator result", - "type": "object", - "properties": { - "displayName": { - "type": "string" - }, - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - } - } - } - } - } - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - } - } - } - } - } - }, - "v1SpectroClusterVariable": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - }, - "v1SpectroClusters": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "SpectroCluster is the Schema for the spectroclusters 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SpectroClusterSpec defines the desired state of SpectroCluster", - "type": "object", - "properties": { - "cloudConfigRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "cloudType": { - "type": "string" - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute contains additional cluster metadata information.", - "type": "string" - }, - "clusterRbac": { - "description": "Deprecated. Use clusterResources", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterResources": { - "type": "object", - "properties": { - "namespaces": { - "description": "Cluster namespaces", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "rbacs": { - "description": "Cluster RBAC role bindings", - "type": "array", - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "controlPlaneHealthCheckTimeout": { - "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "machineHealthConfig": { - "type": "object", - "properties": { - "healthCheckMaxUnhealthy": { - "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", - "type": "string" - }, - "networkReadyHealthCheckDuration": { - "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", - "type": "string" - }, - "nodeReadyHealthCheckDuration": { - "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", - "type": "boolean" - } - } - }, - "clusterProfileTemplates": { - "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", - "type": "array", - "items": { - "description": "ClusterProfileTemplate contains details of a clusterprofile definition", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "packServerRefs": { - "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "packServerSecret": { - "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", - "type": "string" - }, - "packs": { - "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "profileVersion": { - "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", - "type": "string" - }, - "relatedObject": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "version": { - "description": "Deprecated. Use profileVersion", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterType": { - "type": "string", - "enum": [ - "PureManage", - "AlloyMonitor", - "AlloyAssist", - "AlloyExtend" - ] - } - } - }, - "status": { - "description": "SpectroClusterStatus", - "type": "object", - "properties": { - "abortTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "addOnServices": { - "type": "array", - "items": { - "description": "Spectro cluster addon service", - "properties": { - "endpoint": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - }, - "apiEndpoints": { - "type": "array", - "items": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - } - }, - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "packs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "endTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "manifests": { - "type": "array", - "items": { - "type": "object", - "properties": { - "condition": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "profileUid": { - "type": "string" - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "profileStatus": { - "type": "object", - "properties": { - "hasUserMacros": { - "description": "If it is true then profile pack values has a reference to user defined macros", - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", - "type": "string" - }, - "name": { - "description": "name of the loadbalancer service", - "type": "string" - }, - "ports": { - "description": "port this service exposed", - "type": "array", - "items": { - "type": "object", - "required": [ - "port" - ], - "properties": { - "port": { - "description": "The port that will be exposed by this service.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "type": "string" - } - } - } - } - } - } - }, - "spcApply": { - "type": "object", - "properties": { - "actionType": { - "type": "string", - "enum": [ - "DownloadAndInstall", - "DownloadAndInstallLater" - ] - }, - "canBeApplied": { - "description": "If it is true then Agent can apply the changes to the palette", - "type": "boolean", - "x-omitempty": false - }, - "crdDigest": { - "type": "string" - }, - "lastModifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchAppliedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "spcHash": { - "type": "string" - }, - "spcInfraHash": { - "type": "string" - } - } - }, - "state": { - "description": "current operational state", - "type": "string" - }, - "upgrades": { - "type": "array", - "items": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroClustersAgentsNotifyEntity": { - "description": "SpectroClusters for which agents has to be notified", - "properties": { - "clusterUids": { - "type": "array", - "items": { - "type": "string" - } - }, - "notifyAllClusters": { - "type": "boolean" - } - } - }, - "v1SpectroClustersCostComputeSpec": { - "description": "Cluster's cost compute spec", - "type": "object", - "properties": { - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SpectroClustersHealth": { - "description": "Spectro Clusters health data", - "type": "object", - "properties": { - "errored": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "healthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "running": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "unhealthy": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - }, - "v1SpectroClustersMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - } - } - } - }, - "v1SpectroClustersMetadataSearch": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster meta summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Spectro cluster meta summary", - "type": "object", - "properties": { - "archType": { - "description": "Architecture type of the cluster", - "type": "array", - "items": { - "type": "string", - "default": "amd64", - "enum": [ - "arm64", - "amd64" - ] - } - }, - "cloudAccountUid": { - "type": "string" - }, - "cloudRegion": { - "type": "string" - }, - "cloudType": { - "type": "string" - }, - "clusterType": { - "type": "string" - }, - "importMode": { - "type": "string" - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Spectro cluster meta status summary", - "properties": { - "cost": { - "description": "Cluster meta Cost information", - "type": "object", - "properties": { - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Cluster meta health information", - "type": "object", - "properties": { - "isHeartBeatFailed": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "type": "string" - } - } - }, - "state": { - "type": "string" - }, - "updates": { - "description": "Cluster meta updates information", - "type": "object", - "properties": { - "isUpdatesPending": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroClustersSummary": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "specSummary": { - "description": "Spectro cluster spec summary", - "type": "object", - "properties": { - "archTypes": { - "description": "Architecture type of the cluster", - "type": "array", - "items": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - }, - "cloudAccountMeta": { - "description": "Cloud account meta information", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "cloudConfig": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "machinePools": { - "description": "Machine pool meta information", - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "healthy": { - "description": "number of healthy machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "infraProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "maintenanceMode": { - "description": "number of machines under maintenance", - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - }, - "uid": { - "description": "Cluster's cloud config uid", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "hostClusterConfig": { - "properties": { - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - } - } - } - }, - "clusterProfileTemplate": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - }, - "clusterProfileTemplates": { - "type": "array", - "items": { - "description": "Cluster profile template meta information", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "name": { - "description": "Cluster profile name", - "type": "string" - }, - "packs": { - "description": "Cluster profile packs array", - "type": "array", - "items": { - "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", - "type": "object", - "required": [ - "layer", - "name" - ], - "properties": { - "annotations": { - "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "digest": { - "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", - "type": "string" - }, - "inValidReason": { - "type": "string" - }, - "isInvalid": { - "description": "pack is invalid when the associated tag is deleted from the registry", - "type": "boolean" - }, - "layer": { - "type": "string", - "enum": [ - "kernel", - "os", - "k8s", - "cni", - "csi", - "addon" - ] - }, - "logo": { - "description": "path to the pack logo", - "type": "string" - }, - "manifests": { - "type": "array", - "items": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - } - }, - "name": { - "description": "pack name", - "type": "string" - }, - "packUid": { - "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", - "type": "string" - }, - "params": { - "description": "params passed as env variables to be consumed at installation time", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "presets": { - "type": "array", - "items": { - "description": "PackPreset defines the preset pack values", - "type": "object", - "properties": { - "add": { - "type": "string", - "x-omitempty": false - }, - "displayName": { - "type": "string", - "x-omitempty": false - }, - "group": { - "type": "string", - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "remove": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - }, - "registryUid": { - "description": "pack registry uid", - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "description": "PackSchema defines the schema definition, hints for the pack values", - "type": "object", - "properties": { - "format": { - "type": "string", - "x-omitempty": false - }, - "hints": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "listOptions": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "name": { - "type": "string", - "x-omitempty": false - }, - "readonly": { - "type": "boolean", - "x-omitempty": false - }, - "regex": { - "type": "string", - "x-omitempty": false - }, - "required": { - "type": "boolean", - "x-omitempty": false - }, - "type": { - "type": "string", - "x-omitempty": false - } - } - } - }, - "server": { - "description": "pack registry server or helm repo", - "type": "string" - }, - "tag": { - "description": "pack tag", - "type": "string" - }, - "type": { - "description": "type of the pack", - "type": "string", - "enum": [ - "spectro", - "helm", - "manifest" - ] - }, - "values": { - "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - }, - "version": { - "description": "pack version", - "type": "string" - } - } - } - }, - "scope": { - "description": "scope or context(system, tenant or project)", - "type": "string" - }, - "type": { - "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "version": { - "type": "integer", - "format": "int32" - } - } - } - }, - "projectMeta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Spectro cluster status summary", - "properties": { - "clusterImport": { - "type": "object", - "properties": { - "importLink": { - "description": "import link to download and install ally-lite, palette-lite", - "type": "string" - }, - "isBrownfield": { - "description": "Deprecated. Use the 'spec.clusterType'", - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "cluster import status", - "type": "string" - } - } - }, - "cost": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "fips": { - "properties": { - "mode": { - "type": "string", - "default": "none", - "enum": [ - "full", - "none", - "partial", - "unknown" - ] - } - } - }, - "health": { - "description": "Spectro cluster health status", - "properties": { - "agentVersion": { - "type": "string" - }, - "conditions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro cluster health condition", - "properties": { - "message": { - "type": "string" - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "hourlyRate": { - "description": "Resource Cost information", - "type": "object", - "properties": { - "cloud": { - "description": "Cloud cost information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "coordinates": { - "type": "array", - "items": { - "type": "number", - "format": "float64" - } - }, - "countryCode": { - "type": "string" - }, - "countryName": { - "type": "string" - }, - "regionCode": { - "type": "string" - }, - "regionName": { - "type": "string" - } - } - }, - "metrics": { - "description": "Spectro cluster metrics", - "properties": { - "cpu": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - }, - "memory": { - "description": "Compute metrics", - "type": "object", - "properties": { - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "number", - "x-omitempty": false - }, - "request": { - "type": "number", - "x-omitempty": false - }, - "total": { - "type": "number", - "x-omitempty": false - }, - "unit": { - "type": "string" - }, - "usage": { - "type": "number", - "x-omitempty": false - } - } - } - } - }, - "notifications": { - "description": "Cluster notifications status", - "properties": { - "isAvailable": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "repave": { - "description": "Cluster repave status", - "properties": { - "state": { - "type": "string", - "default": "Pending", - "enum": [ - "Pending", - "Approved", - "Reverted" - ] - } - } - }, - "state": { - "type": "string" - }, - "virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroClustersUsageComputeSpec": { - "description": "Cluster's usage compute spec", - "type": "object", - "properties": { - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SpectroCustomClusterEntity": { - "description": "Custom cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "values" - ], - "properties": { - "values": { - "description": "YAML string for Cluster and CloudCluster", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "values": { - "description": "Machine pool configuration as yaml content", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the custom cluster", - "type": "object", - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroEdgeNativeClusterEntity": { - "description": "EdgeNative cluster create or update request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cloudConfig": { - "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "overlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudConfig": { - "required": [ - "edgeHosts" - ], - "properties": { - "edgeHosts": { - "type": "array", - "uniqueItems": true, - "items": { - "required": [ - "hostUid" - ], - "properties": { - "hostName": { - "description": "Edge host name", - "type": "string" - }, - "hostUid": { - "description": "Edge host id", - "type": "string" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated - Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated - Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroEdgeNativeClusterImportEntity": { - "description": "Spectro EdgeNative cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroEdgeNativeClusterRateEntity": { - "description": "Edge-native cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "overlayNetworkConfiguration": { - "type": "object", - "properties": { - "cidr": { - "description": "CIDR is the CIDR of the overlay network", - "type": "string" - }, - "enable": { - "description": "Enable is a flag to enable overlay network", - "type": "boolean", - "x-omitempty": false - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudConfig": { - "required": [ - "edgeHosts" - ], - "properties": { - "edgeHosts": { - "type": "array", - "uniqueItems": true, - "items": { - "required": [ - "hostUid" - ], - "properties": { - "hostName": { - "description": "Edge host name", - "type": "string" - }, - "hostUid": { - "description": "Edge host id", - "type": "string" - }, - "nic": { - "type": "object", - "properties": { - "dns": { - "type": "array", - "items": { - "type": "string" - } - }, - "gateway": { - "type": "string" - }, - "ip": { - "type": "string" - }, - "isDefault": { - "type": "boolean" - }, - "macAddr": { - "type": "string" - }, - "nicName": { - "type": "string" - }, - "subnet": { - "type": "string" - } - } - }, - "nicName": { - "description": "Deprecated - Edge host nic name", - "type": "string" - }, - "staticIP": { - "description": "Deprecated - Edge host static IP", - "type": "string" - }, - "twoNodeCandidatePriority": { - "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", - "type": "string", - "enum": [ - "primary", - "secondary" - ] - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroEksClusterEntity": { - "description": "Spectro EKS cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "EksClusterConfig defines EKS specific config", - "type": "object", - "required": [ - "region" - ], - "properties": { - "addons": { - "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", - "type": "array", - "items": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - } - }, - "bastionDisabled": { - "description": "BastionDisabled is the option to disable bastion node", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "encryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "endpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "region": { - "description": "The AWS Region the cluster lives in.", - "type": "string" - }, - "sshKeyName": { - "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "fargateProfiles": { - "type": "array", - "items": { - "description": "FargateProfile defines the desired state of FargateProfile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "name specifies the profile name.", - "type": "string" - }, - "selectors": { - "description": "Selectors specify fargate pod selectors.", - "type": "array", - "items": { - "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", - "type": "object", - "required": [ - "namespace" - ], - "properties": { - "labels": { - "description": "Labels specifies which pod labels this selector should match.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "description": "Namespace specifies which namespace this selector should match.", - "type": "string" - } - } - } - }, - "subnetIds": { - "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "properties": { - "cloudConfig": { - "properties": { - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroEksClusterRateEntity": { - "description": "Spectro EKS cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "EksClusterConfig defines EKS specific config", - "type": "object", - "required": [ - "region" - ], - "properties": { - "addons": { - "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", - "type": "array", - "items": { - "description": "EksAddon represents a EKS addon", - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "conflictResolution": { - "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", - "type": "string" - }, - "name": { - "description": "Name is the name of the addon", - "type": "string" - }, - "serviceAccountRoleARN": { - "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", - "type": "string" - }, - "version": { - "description": "Version is the version of the addon to use", - "type": "string" - } - } - } - }, - "bastionDisabled": { - "description": "BastionDisabled is the option to disable bastion node", - "type": "boolean" - }, - "controlPlaneLoadBalancer": { - "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", - "type": "string" - }, - "encryptionConfig": { - "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", - "type": "object", - "properties": { - "isEnabled": { - "description": "Is encryption configuration enabled for the cluster", - "type": "boolean" - }, - "provider": { - "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", - "type": "string" - }, - "resources": { - "description": "Resources specifies the resources to be encrypted", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "endpointAccess": { - "description": "EndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDRs": { - "description": "PrivateCIDRs specifies which blocks can access the private endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "region": { - "description": "The AWS Region the cluster lives in.", - "type": "string" - }, - "sshKeyName": { - "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", - "type": "string" - }, - "vpcId": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "properties": { - "cloudConfig": { - "properties": { - "awsLaunchTemplate": { - "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", - "type": "object", - "properties": { - "additionalSecurityGroups": { - "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", - "type": "array", - "uniqueItems": true, - "items": { - "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", - "type": "object", - "properties": { - "arn": { - "description": "ARN of resource", - "type": "string" - }, - "filters": { - "description": "Filters is a set of key/value pairs used to identify a resource", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Filter is a filter used to identify an AWS resource", - "type": "object", - "properties": { - "name": { - "description": "Name of the filter. Filter names are case-sensitive", - "type": "string" - }, - "values": { - "description": "Values includes one or more filter values. Filter values are case-sensitive", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - } - }, - "ami": { - "description": "AMI is the reference to the AMI from which to create the machine instance", - "type": "object", - "properties": { - "eksOptimizedLookupType": { - "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", - "type": "string", - "enum": [ - "AmazonLinux", - "AmazonLinuxGPU" - ] - }, - "id": { - "description": "ID of resource", - "type": "string" - } - } - }, - "imageLookupBaseOS": { - "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", - "type": "string" - }, - "imageLookupFormat": { - "description": "ImageLookupFormat is the AMI naming format to look up the image", - "type": "string" - }, - "imageLookupOrg": { - "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", - "type": "string" - }, - "rootVolume": { - "description": "Volume encapsulates the configuration options for the storage device.", - "type": "object", - "properties": { - "deviceName": { - "description": "Device name", - "type": "string" - }, - "encrypted": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "boolean" - }, - "encryptionKey": { - "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", - "type": "string" - }, - "iops": { - "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", - "type": "integer", - "format": "int64" - }, - "throughput": { - "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", - "type": "string" - } - } - } - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "capacityType": { - "description": "EC2 instance capacity type", - "type": "string", - "default": "on-demand", - "enum": [ - "on-demand", - "spot" - ] - }, - "enableAwsLaunchTemplate": { - "description": "flag to know if aws launch template is enabled", - "type": "boolean" - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "spotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroGcpClusterEntity": { - "description": "GCP cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "project", - "region" - ], - "properties": { - "managedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroGcpClusterImportEntity": { - "description": "Spectro GCP cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroGcpClusterRateEntity": { - "description": "Gcp cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "project", - "region" - ], - "properties": { - "managedClusterConfig": { - "description": "GCP managed cluster config", - "type": "object", - "properties": { - "enableAutoPilot": { - "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", - "type": "boolean" - }, - "location": { - "description": "Can be Region or Zone", - "type": "string" - } - } - }, - "network": { - "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", - "type": "string" - }, - "project": { - "description": "Name of the project in which cluster is to be deployed", - "type": "string" - }, - "region": { - "description": "GCP region for the cluster", - "type": "string" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "string" - }, - "rootDeviceSize": { - "description": "Size of root volume in GB. Default is 30GB", - "type": "integer", - "format": "int64" - }, - "subnet": { - "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "properties": { - "az": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroGenericClusterImportEntity": { - "description": "Spectro generic cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - }, - "edgeConfig": { - "type": "object", - "properties": { - "edgeHostUid": { - "description": "Deprecated. Use 'edgeHostUids' field", - "type": "string" - }, - "edgeHostUids": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SpectroGenericClusterRateEntity": { - "description": "Generic cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "properties": { - "cloudConfig": { - "description": "Generic cluster config", - "type": "object", - "properties": { - "instanceType": { - "type": "object", - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "region": { - "description": "cluster region information", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroInstallerEntity": { - "description": "Spectro installer entity for create", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string" - }, - "privateGatewayUid": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "status": { - "description": "Spectro cluster installer status", - "type": "object", - "properties": { - "clusterMigration": { - "description": "Spectro cluster migration status", - "type": "object", - "properties": { - "database": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "tenant": { - "description": "Spectro tenant migration status", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "clusterState": { - "type": "string" - }, - "endpoint": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroInstallerInputEntity": { - "description": "Spectro installer entity for create", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1SpectroInstallerStatus": { - "description": "spectro installer status", - "type": "object", - "properties": { - "status": { - "description": "Spectro cluster installer status", - "type": "object", - "properties": { - "clusterMigration": { - "description": "Spectro cluster migration status", - "type": "object", - "properties": { - "database": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "tenant": { - "description": "Spectro tenant migration status", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "clusterState": { - "type": "string" - }, - "endpoint": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroInstallers": { - "description": "List Spectro installers", - "type": "object", - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro installer entity for create", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cloudAccountUid": { - "type": "string" - }, - "privateGatewayUid": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - } - } - }, - "status": { - "description": "Spectro cluster installer status", - "type": "object", - "properties": { - "clusterMigration": { - "description": "Spectro cluster migration status", - "type": "object", - "properties": { - "database": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folderName": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "status": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - }, - "tenant": { - "description": "Spectro tenant migration status", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "clusterState": { - "type": "string" - }, - "endpoint": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1SpectroLibvirtClusterEntity": { - "description": "Libvirt cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudConfig": { - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Libvirt placement config", - "type": "object", - "required": [ - "hostUid" - ], - "properties": { - "dataStoragePool": { - "type": "string" - }, - "gpuDevices": { - "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostUid": { - "type": "string" - }, - "networks": { - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "type": "string" - }, - "targetStoragePool": { - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GiB", - "type": "integer", - "format": "int32" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroLibvirtClusterImportEntity": { - "description": "Spectro Libvirt cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroLibvirtClusterRateEntity": { - "description": "libvirt cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "Host is FQDN(DDNS) or IP", - "type": "string" - }, - "type": { - "description": "Type indicates DDNS or VIP", - "type": "string" - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", - "type": "array", - "items": { - "type": "string" - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "properties": { - "cloudConfig": { - "required": [ - "instanceType", - "placements", - "rootDiskInGB" - ], - "properties": { - "instanceType": { - "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", - "type": "object", - "required": [ - "numCPUs", - "memoryInMB" - ], - "properties": { - "cpuPassthroughSpec": { - "type": "object", - "properties": { - "cachePassthrough": { - "type": "boolean" - }, - "isEnabled": { - "description": "Enables the CPU Passthrough for the libvirt domain", - "type": "boolean" - } - } - }, - "cpuset": { - "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", - "type": "string" - }, - "gpuConfig": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "deviceModel": { - "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "numGPUs": { - "description": "NumGPUs is the number of GPUs", - "type": "integer", - "format": "int32" - }, - "vendorName": { - "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - }, - "memoryInMB": { - "description": "MemoryinMB is the memory in megabytes", - "type": "integer", - "format": "int32" - }, - "numCPUs": { - "description": "NumCPUs is the number of CPUs", - "type": "integer", - "format": "int32" - } - } - }, - "nonRootDisksInGB": { - "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", - "type": "array", - "items": { - "type": "object", - "required": [ - "sizeInGB" - ], - "properties": { - "dataStoragePool": { - "description": "DataStoragePool is the storage pool from which additional disks are assigned", - "type": "string" - }, - "managed": { - "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", - "type": "boolean" - }, - "sizeInGB": { - "description": "SizeInGB is the target size in GB of the disk to be added", - "type": "integer", - "format": "int32" - } - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Libvirt placement config", - "type": "object", - "required": [ - "hostUid" - ], - "properties": { - "dataStoragePool": { - "type": "string" - }, - "gpuDevices": { - "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addresses": { - "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "model": { - "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", - "type": "string" - }, - "vendor": { - "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", - "type": "string" - } - } - } - }, - "hostUid": { - "type": "string" - }, - "networks": { - "type": "array", - "items": { - "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", - "type": "object", - "required": [ - "networkName", - "networkType" - ], - "properties": { - "networkName": { - "description": "NetworkName of the libvirt network where this machine will be connected", - "type": "string" - }, - "networkType": { - "description": "NetworkType specifies the type of network", - "type": "string", - "enum": [ - "default", - "bridge" - ] - } - } - } - }, - "sourceStoragePool": { - "type": "string" - }, - "targetStoragePool": { - "type": "string" - } - } - } - }, - "rootDiskInGB": { - "description": "RootDiskInGB is the size of a vm's root disk, in GiB", - "type": "integer", - "format": "int32" - }, - "xslTemplate": { - "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", - "type": "string" - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroMaasClusterEntity": { - "description": "Spectro Maas cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType", - "resourcePool" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "resourcePool": { - "description": "the resource pool", - "type": "string" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroMaasClusterImportEntity": { - "description": "Spectro maas cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroMaasClusterRateEntity": { - "description": "Maas cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "domain": { - "description": "Domain name of the cluster to be provisioned", - "type": "string" - }, - "sshKeys": { - "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType", - "resourcePool" - ], - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - } - } - }, - "resourcePool": { - "description": "the resource pool", - "type": "string" - }, - "tags": { - "description": "Tags in maas environment", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroMgmt": { - "description": "Spectro management data", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "spectro management specifications", - "properties": { - "installerMode": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "targetVersion": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "status": { - "description": "spectro management status information", - "properties": { - "appVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management app version information", - "properties": { - "intermediateVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - }, - "latestVerson": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "isFailed": { - "type": "boolean", - "x-omitempty": false - }, - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "messageLogs": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - }, - "upgradeHistory": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro management upgrade logs", - "properties": { - "upgradeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "version": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SpectroMgmtSpec": { - "description": "spectro management specifications", - "properties": { - "installerMode": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "targetVersion": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1SpectroMgmtStatus": { - "description": "spectro management status information", - "properties": { - "appVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management app version information", - "properties": { - "intermediateVersions": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - }, - "latestVerson": { - "description": "spectro application management release version information", - "properties": { - "date": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "description": { - "type": "string" - }, - "releaseNotes": { - "type": "array", - "items": { - "description": "spectro application management release description", - "properties": { - "details": { - "type": "string" - }, - "title": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "isFailed": { - "type": "boolean", - "x-omitempty": false - }, - "lastUpdatedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "messageLogs": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - }, - "upgradeHistory": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "spectro management upgrade logs", - "properties": { - "upgradeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "v1SpectroMgmtUpgrade": { - "description": "spectro management upgrade logs", - "properties": { - "upgradeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "version": { - "type": "string" - } - } - }, - "v1SpectroMgmtUpgradePack": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "diffMessage": { - "description": "Spectro application management cluster pack difference message", - "type": "string" - }, - "layer": { - "description": "Spectro application management cluster pack layer type", - "type": "string" - }, - "name": { - "description": "Spectro application management cluster pack name", - "type": "string" - }, - "registryUid": { - "description": "Spectro application management cluster pack registry unique identifier", - "type": "string" - }, - "type": { - "description": "Spectro application management cluster pack type", - "type": "string" - }, - "uid": { - "description": "Spectro application management cluster pack unique identifier", - "type": "string" - }, - "values": { - "description": "Spectro application management cluster pack values", - "type": "string" - }, - "version": { - "description": "Spectro application management cluster pack version", - "type": "string" - } - } - }, - "v1SpectroMgmtUpgradeProfile": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "packs": { - "description": "Spectro application management cluster upgrade packs", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "diffMessage": { - "description": "Spectro application management cluster pack difference message", - "type": "string" - }, - "layer": { - "description": "Spectro application management cluster pack layer type", - "type": "string" - }, - "name": { - "description": "Spectro application management cluster pack name", - "type": "string" - }, - "registryUid": { - "description": "Spectro application management cluster pack registry unique identifier", - "type": "string" - }, - "type": { - "description": "Spectro application management cluster pack type", - "type": "string" - }, - "uid": { - "description": "Spectro application management cluster pack unique identifier", - "type": "string" - }, - "values": { - "description": "Spectro application management cluster pack values", - "type": "string" - }, - "version": { - "description": "Spectro application management cluster pack version", - "type": "string" - } - } - } - }, - "uid": { - "description": "Spectro application management cluster profile unique identifier", - "type": "string" - } - } - }, - "v1SpectroMgmtUpgradeProfiles": { - "description": "Spectro application management cluster information", - "type": "object", - "properties": { - "profiles": { - "description": "Spectro application management cluster profiles", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "packs": { - "description": "Spectro application management cluster upgrade packs", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "diffMessage": { - "description": "Spectro application management cluster pack difference message", - "type": "string" - }, - "layer": { - "description": "Spectro application management cluster pack layer type", - "type": "string" - }, - "name": { - "description": "Spectro application management cluster pack name", - "type": "string" - }, - "registryUid": { - "description": "Spectro application management cluster pack registry unique identifier", - "type": "string" - }, - "type": { - "description": "Spectro application management cluster pack type", - "type": "string" - }, - "uid": { - "description": "Spectro application management cluster pack unique identifier", - "type": "string" - }, - "values": { - "description": "Spectro application management cluster pack values", - "type": "string" - }, - "version": { - "description": "Spectro application management cluster pack version", - "type": "string" - } - } - } - }, - "uid": { - "description": "Spectro application management cluster profile unique identifier", - "type": "string" - } - } - } - }, - "version": { - "description": "Spectro application management cluster version", - "type": "string" - } - } - }, - "v1SpectroMgmtUpgradeSpc": { - "description": "Spectro application management cluster upgrade profiles", - "type": "object", - "properties": { - "current": { - "description": "Spectro application management cluster information", - "type": "object", - "properties": { - "profiles": { - "description": "Spectro application management cluster profiles", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "packs": { - "description": "Spectro application management cluster upgrade packs", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "diffMessage": { - "description": "Spectro application management cluster pack difference message", - "type": "string" - }, - "layer": { - "description": "Spectro application management cluster pack layer type", - "type": "string" - }, - "name": { - "description": "Spectro application management cluster pack name", - "type": "string" - }, - "registryUid": { - "description": "Spectro application management cluster pack registry unique identifier", - "type": "string" - }, - "type": { - "description": "Spectro application management cluster pack type", - "type": "string" - }, - "uid": { - "description": "Spectro application management cluster pack unique identifier", - "type": "string" - }, - "values": { - "description": "Spectro application management cluster pack values", - "type": "string" - }, - "version": { - "description": "Spectro application management cluster pack version", - "type": "string" - } - } - } - }, - "uid": { - "description": "Spectro application management cluster profile unique identifier", - "type": "string" - } - } - } - }, - "version": { - "description": "Spectro application management cluster version", - "type": "string" - } - } - }, - "target": { - "description": "Spectro application management cluster information", - "type": "object", - "properties": { - "profiles": { - "description": "Spectro application management cluster profiles", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "packs": { - "description": "Spectro application management cluster upgrade packs", - "type": "array", - "items": { - "description": "Spectro application management cluster upgrade pack information", - "type": "object", - "properties": { - "diffMessage": { - "description": "Spectro application management cluster pack difference message", - "type": "string" - }, - "layer": { - "description": "Spectro application management cluster pack layer type", - "type": "string" - }, - "name": { - "description": "Spectro application management cluster pack name", - "type": "string" - }, - "registryUid": { - "description": "Spectro application management cluster pack registry unique identifier", - "type": "string" - }, - "type": { - "description": "Spectro application management cluster pack type", - "type": "string" - }, - "uid": { - "description": "Spectro application management cluster pack unique identifier", - "type": "string" - }, - "values": { - "description": "Spectro application management cluster pack values", - "type": "string" - }, - "version": { - "description": "Spectro application management cluster pack version", - "type": "string" - } - } - } - }, - "uid": { - "description": "Spectro application management cluster profile unique identifier", - "type": "string" - } - } - } - }, - "version": { - "description": "Spectro application management cluster version", - "type": "string" - } - } - } - } - }, - "v1SpectroOpenStackClusterEntity": { - "description": "OpenStack cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "Root disk size", - "type": "integer", - "format": "int32" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroOpenStackClusterImportEntity": { - "description": "Spectro OpenStack cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroOpenStackClusterRateEntity": { - "description": "Openstack cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", - "type": "object", - "properties": { - "bastionDisabled": { - "description": "Create bastion node option we have earlier supported creation of bastion by default", - "type": "boolean" - }, - "dnsNameservers": { - "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", - "type": "array", - "items": { - "type": "string" - } - }, - "domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "network": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "nodeCidr": { - "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", - "type": "string" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyName": { - "type": "string" - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "flavorConfig" - ], - "properties": { - "azs": { - "description": "for control plane pool, this will be the failure domains for kcp", - "type": "array", - "items": { - "type": "string" - } - }, - "diskGiB": { - "description": "Root disk size", - "type": "integer", - "format": "int32" - }, - "flavorConfig": { - "required": [ - "name" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", - "type": "integer", - "format": "int64" - }, - "name": { - "description": "Openstack flavor name", - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine.", - "type": "integer", - "format": "int32" - } - } - }, - "subnet": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroTenantClusterMigration": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1SpectroTenantMigration": { - "description": "Spectro tenant migration status", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Spectro tenant cluster migration status", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "name": { - "type": "string" - }, - "state": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "state": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SpectroTencentClusterEntity": { - "description": "Tencent cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "cloudAccountUid", - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "endpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroTencentClusterRateEntity": { - "description": "Spectro Tencent cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "endpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpectroVirtualClusterEntity": { - "description": "Spectro virtual cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudType", - "clusterConfig" - ], - "properties": { - "cloudConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroVsphereClusterEntity": { - "description": "vSphere cluster request payload for create and update", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudAccountUid": { - "description": "Cloud account uid to be used for cluster provisioning", - "type": "string" - }, - "cloudConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "clusterConfig": { - "type": "object", - "properties": { - "clusterMetaAttribute": { - "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", - "type": "string" - }, - "controlPlaneHealthCheckTimeout": { - "type": "string" - }, - "hostClusterConfig": { - "properties": { - "clusterEndpoint": { - "properties": { - "config": { - "properties": { - "ingressConfig": { - "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer", - "format": "int64" - } - } - }, - "loadBalancerConfig": { - "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", - "properties": { - "externalIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "externalTrafficPolicy": { - "type": "string" - }, - "loadBalancerSourceRanges": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "type": { - "description": "is enabled as host cluster", - "type": "string", - "enum": [ - "Ingress", - "LoadBalancer" - ] - } - } - }, - "clusterGroup": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "hostCluster": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "isHostCluster": { - "description": "is enabled as host cluster", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "lifecycleConfig": { - "properties": { - "pause": { - "description": "enable pause life cycle config", - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "location": { - "description": "Cluster location information", - "type": "object", - "properties": { - "countryCode": { - "description": "country code for cluster location", - "type": "string" - }, - "countryName": { - "description": "country name for cluster location", - "type": "string" - }, - "geoLoc": { - "description": "Geolocation Latlong entity", - "type": "object", - "properties": { - "latitude": { - "description": "Latitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "longitude": { - "description": "Longitude of a resource", - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "regionCode": { - "description": "region code for cluster location", - "type": "string" - }, - "regionName": { - "description": "region name for cluster location", - "type": "string" - } - } - }, - "machineManagementConfig": { - "type": "object", - "properties": { - "osPatchConfig": { - "type": "object", - "properties": { - "onDemandPatchAfter": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "patchOnBoot": { - "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", - "type": "boolean", - "x-omitempty": false - }, - "rebootIfRequired": { - "description": "Reboot once the OS patch is applied", - "type": "boolean", - "x-omitempty": false - }, - "schedule": { - "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster Namespace resource defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster namespace spec", - "properties": { - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "resourceAllocation": { - "description": "Cluster namespace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "memoryMiB": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - } - } - } - } - } - } - } - }, - "rbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta update entity with uid as input", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "updateWorkerPoolsInParallel": { - "type": "boolean" - } - } - }, - "edgeHostUid": { - "description": "Appliance (Edge Host) uid for Edge env", - "type": "string" - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "policies": { - "description": "Cluster policies", - "type": "object", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "scanPolicy": { - "description": "Cluster compliance scan schedule configuration", - "properties": { - "kubeBench": { - "description": "Cluster compliance scan schedule config for kube bench driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "kubeHunter": { - "description": "Cluster compliance scan schedule config for kube hunter driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "sonobuoy": { - "description": "Cluster compliance scan schedule config for sonobuoy driver", - "properties": { - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "profiles": { - "type": "array", - "items": { - "description": "Cluster profile request payload", - "type": "object", - "properties": { - "packValues": { - "description": "Cluster profile packs array", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Pack values entity to refer the existing pack for the values override", - "type": "object", - "required": [ - "name" - ], - "properties": { - "manifests": { - "description": "Pack manifests are additional content as part of the profile", - "type": "array", - "items": { - "description": "Manifest update request payload", - "required": [ - "name" - ], - "properties": { - "content": { - "description": "Manifest content in yaml", - "type": "string" - }, - "name": { - "description": "Manifest name", - "type": "string" - }, - "uid": { - "description": "Manifest uid", - "type": "string" - } - } - } - }, - "name": { - "description": "Pack name", - "type": "string" - }, - "tag": { - "description": "Pack version tag", - "type": "string" - }, - "type": { - "type": "string", - "default": "spectro", - "enum": [ - "spectro", - "helm", - "manifest", - "oci" - ] - }, - "values": { - "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", - "type": "string" - } - } - } - }, - "replaceWithProfile": { - "description": "Cluster profile uid to be replaced with new profile", - "type": "string" - }, - "uid": { - "description": "Cluster profile uid", - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "description": "Variable with value which will be used within the packs of cluster profile", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Variable name", - "type": "string" - }, - "value": { - "description": "Actual value of the variable to be used within the cluster", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1SpectroVsphereClusterImportEntity": { - "description": "Spectro Vsphere cluster import request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "properties": { - "importMode": { - "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", - "type": "string", - "enum": [ - "read-only" - ] - }, - "proxy": { - "description": "cluster proxy config spec", - "type": "object", - "properties": { - "caContainerMountPath": { - "description": "Location to mount Proxy CA cert inside container", - "type": "string" - }, - "caHostPath": { - "description": "Location for Proxy CA cert on host nodes", - "type": "string" - }, - "httpProxy": { - "description": "URL for HTTP requests unless overridden by NoProxy", - "type": "string" - }, - "httpsProxy": { - "description": "HTTPS requests unless overridden by NoProxy", - "type": "string" - }, - "noProxy": { - "description": "NoProxy represents the NO_PROXY or no_proxy environment", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1SpectroVsphereClusterRateEntity": { - "description": "Vsphere cluster request payload for estimating rate", - "type": "object", - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "machinepoolconfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1SpotMarketOptions": { - "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "v1SpotVMOptions": { - "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs", - "type": "object", - "properties": { - "maxPrice": { - "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", - "type": "string" - } - } - }, - "v1SsoLogin": { - "description": "Describes the allowed sso login details", - "type": "object", - "properties": { - "displayName": { - "description": "Describes the display name for the sso login", - "type": "string" - }, - "logo": { - "description": "Describes the url path for the sso login", - "type": "string" - }, - "name": { - "description": "Describes the processed name for the sso login", - "type": "string" - }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "type": "string" - } - } - }, - "v1SsoLogins": { - "description": "Describes the allowed sso logins", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Describes the allowed sso login details", - "type": "object", - "properties": { - "displayName": { - "description": "Describes the display name for the sso login", - "type": "string" - }, - "logo": { - "description": "Describes the url path for the sso login", - "type": "string" - }, - "name": { - "description": "Describes the processed name for the sso login", - "type": "string" - }, - "redirectUri": { - "description": "Describes the sso login url for the authentication", - "type": "string" - } - } - } - }, - "v1StorageAccount": { - "description": "Azure storage account provides a unique namespace for your Azure resources", - "type": "object", - "properties": { - "id": { - "description": "Fully qualified resource ID for the resource", - "type": "string" - }, - "kind": { - "description": "The kind of the resource", - "type": "string" - }, - "location": { - "description": "The geo-location where the resource lives", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" - } - } - }, - "v1StorageAccountEntity": { - "description": "Azure storage account entity", - "type": "object", - "properties": { - "id": { - "description": "Azure storage account id", - "type": "string" - }, - "name": { - "description": "Azure storage account name", - "type": "string" - } - } - }, - "v1StorageContainer": { - "description": "Azure storage container organizes a set of blobs, similar to a directory in a file system", - "type": "object", - "properties": { - "id": { - "description": "Fully qualified resource ID for the resource.", - "type": "string" - }, - "name": { - "description": "The name of the resource", - "type": "string" - }, - "type": { - "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\"", - "type": "string" - } - } - }, - "v1StorageCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "v1StoragePrice": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - }, - "v1StorageRate": { - "description": "Storage estimated rate information", - "type": "object", - "properties": { - "iops": { - "type": "number", - "format": "float64" - }, - "rate": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "sizeGB": { - "type": "number", - "format": "float64" - }, - "throughput": { - "type": "number", - "format": "float64" - }, - "type": { - "type": "string" - } - } - }, - "v1StorageType": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - }, - "v1StripeKey": { - "description": "Stripe key object", - "properties": { - "publishKey": { - "description": "Publish stripe key", - "type": "string" - } - } - }, - "v1Subnet": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - }, - "v1Subscription": { - "description": "Azure Subscription Type", - "type": "object", - "properties": { - "authorizationSource": { - "description": "The authorization source of the request. Valid values are one or more combinations of Legacy, RoleBased, Bypassed, Direct and Management", - "type": "string" - }, - "displayName": { - "description": "The subscription display name", - "type": "string" - }, - "state": { - "description": "The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and Deleted.", - "type": "string" - }, - "subscriptionId": { - "description": "The subscription ID", - "type": "string" - } - } - }, - "v1SyftDependency": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1SyftDependencyEntity": { - "description": "Syft dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "v1SyftEntity": { - "description": "Syft response", - "required": [ - "requestUid", - "status", - "report" - ], - "properties": { - "report": { - "description": "Syft report", - "properties": { - "batchNo": { - "type": "integer", - "format": "int32" - }, - "batchSize": { - "type": "integer", - "format": "int32" - }, - "dependencies": { - "type": "array", - "items": { - "description": "Syft dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "sbom": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Syft vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Syft vulnerability summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "requestUid": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "Completed", - "InProgress", - "Failed", - "Initiated" - ] - } - } - }, - "v1SyftImageContext": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - }, - "v1SyftReport": { - "description": "Compliance Scan Syft Report", - "properties": { - "dependencies": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "isSBOMExist": { - "type": "boolean" - }, - "state": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1SyftReportEntity": { - "description": "Syft report", - "properties": { - "batchNo": { - "type": "integer", - "format": "int32" - }, - "batchSize": { - "type": "integer", - "format": "int32" - }, - "dependencies": { - "type": "array", - "items": { - "description": "Syft dependency", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - }, - "image": { - "type": "string" - }, - "imageContexts": { - "type": "array", - "items": { - "description": "Compliance Scan Syft Image Context", - "properties": { - "containerName": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - } - } - } - }, - "sbom": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "vulnerabilities": { - "type": "array", - "items": { - "description": "Syft vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - } - }, - "vulnerabilitySummary": { - "description": "Syft vulnerability summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1SyftScanContext": { - "description": "Compliance Scan Syft Context", - "properties": { - "format": { - "type": "string" - }, - "labelSelector": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "scope": { - "type": "string" - } - } - }, - "v1SyftVulnerability": { - "description": "Compliance Scan Syft Vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - }, - "v1SyftVulnerabilityEntity": { - "description": "Syft vulnerability", - "properties": { - "fixedIn": { - "type": "string" - }, - "installed": { - "type": "string" - }, - "name": { - "type": "string" - }, - "severity": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vulnerability": { - "type": "string" - } - } - }, - "v1SyftVulnerabilitySummary": { - "description": "Compliance Scan Syft Vulnerability Summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - }, - "v1SyftVulnerabilitySummaryEntity": { - "description": "Syft vulnerability summary", - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "high": { - "type": "integer", - "format": "int32" - }, - "low": { - "type": "integer", - "format": "int32" - }, - "medium": { - "type": "integer", - "format": "int32" - }, - "negligible": { - "type": "integer", - "format": "int32" - }, - "unknown": { - "type": "integer", - "format": "int32" - } - } - }, - "v1SysLogin": { - "description": "System admin login input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "password": { - "type": "string", - "format": "password" - }, - "username": { - "type": "string" - } - } - }, - "v1SysUserToken": { - "description": "Auth token response", - "type": "object", - "properties": { - "Authorization": { - "type": "string" - }, - "IsEmailSet": { - "type": "boolean", - "x-omitempty": false - }, - "IsEmailVerified": { - "type": "boolean", - "x-omitempty": false - }, - "IsMfa": { - "type": "boolean", - "x-omitempty": false - }, - "IsPasswordReset": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1SystemAdmin": { - "description": "System Admin information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "System Administrator Entity Specification", - "type": "object", - "required": [ - "firstName", - "lastName", - "emailId", - "adminType" - ], - "properties": { - "adminType": { - "type": "string", - "enum": [ - "AccountAdmin", - "OperationAdmin" - ] - }, - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "mfa": { - "description": "System Administrator MFA configuration", - "type": "object", - "properties": { - "devices": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "System Administrator Status", - "type": "object", - "properties": { - "activation": { - "description": "System Administrator Activation Specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "link": { - "type": "string" - } - } - }, - "createdBy": { - "type": "string" - }, - "lastPasswordUpdate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1SystemAdminActivation": { - "description": "System Administrator Activation Specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "link": { - "type": "string" - } - } - }, - "v1SystemAdminEntity": { - "description": "System Admin information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "System Administrator Entity Specification", - "type": "object", - "required": [ - "firstName", - "lastName", - "emailId", - "adminType" - ], - "properties": { - "adminType": { - "type": "string", - "enum": [ - "AccountAdmin", - "OperationAdmin" - ] - }, - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "mfa": { - "description": "System Administrator MFA configuration", - "type": "object", - "properties": { - "devices": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1SystemAdminMfa": { - "description": "System Administrator MFA configuration", - "type": "object", - "properties": { - "devices": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - } - } - }, - "v1SystemAdminProfile": { - "description": "System Administrator Profile Entity", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "System Administrator Profile Specification", - "type": "object", - "properties": { - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - } - } - } - } - }, - "v1SystemAdminProfileSpec": { - "description": "System Administrator Profile Specification", - "type": "object", - "properties": { - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - } - } - }, - "v1SystemAdministratorSpec": { - "description": "System Administrator Entity Specification", - "type": "object", - "required": [ - "firstName", - "lastName", - "emailId", - "adminType" - ], - "properties": { - "adminType": { - "type": "string", - "enum": [ - "AccountAdmin", - "OperationAdmin" - ] - }, - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "mfa": { - "description": "System Administrator MFA configuration", - "type": "object", - "properties": { - "devices": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1SystemAdministratorStatus": { - "description": "System Administrator Status", - "type": "object", - "properties": { - "activation": { - "description": "System Administrator Activation Specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "link": { - "type": "string" - } - } - }, - "createdBy": { - "type": "string" - }, - "lastPasswordUpdate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "v1SystemAdmins": { - "description": "List of System Admin information's", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "System Admin information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "System Administrator Entity Specification", - "type": "object", - "required": [ - "firstName", - "lastName", - "emailId", - "adminType" - ], - "properties": { - "adminType": { - "type": "string", - "enum": [ - "AccountAdmin", - "OperationAdmin" - ] - }, - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "mfa": { - "description": "System Administrator MFA configuration", - "type": "object", - "properties": { - "devices": { - "type": "array", - "items": { - "type": "string" - } - }, - "state": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "System Administrator Status", - "type": "object", - "properties": { - "activation": { - "description": "System Administrator Activation Specification", - "type": "object", - "properties": { - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "link": { - "type": "string" - } - } - }, - "createdBy": { - "type": "string" - }, - "lastPasswordUpdate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1SystemAwsAccount": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system aws account specifications", - "properties": { - "accessKey": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - } - } - }, - "v1SystemAwsImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system aws account specifications", - "properties": { - "goldenImageRegion": { - "type": "string" - } - } - } - } - }, - "v1SystemAwsImageSpec": { - "description": "system aws account specifications", - "properties": { - "goldenImageRegion": { - "type": "string" - } - } - }, - "v1SystemAwsSpec": { - "description": "system aws account specifications", - "properties": { - "accessKey": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - }, - "v1SystemAwsStsAccount": { - "description": "System AWS Gov account specifications", - "properties": { - "accessKey": { - "type": "string" - }, - "accountId": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - }, - "v1SystemAzureAccount": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system azure account specifications", - "properties": { - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - } - } - }, - "v1SystemAzureSpec": { - "description": "system azure account specifications", - "properties": { - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "v1SystemAzureStorage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system aws account specifications", - "properties": { - "accessKey": { - "type": "string" - }, - "container": { - "type": "string" - }, - "storageName": { - "type": "string" - } - } - } - } - }, - "v1SystemAzureStorageSpec": { - "description": "system aws account specifications", - "properties": { - "accessKey": { - "type": "string" - }, - "container": { - "type": "string" - }, - "storageName": { - "type": "string" - } - } - }, - "v1SystemBackupConfigSpec": { - "description": "system backup config spec", - "type": "object", - "properties": { - "ftp": { - "description": "system ftp config spec", - "type": "object", - "properties": { - "dir": { - "type": "string", - "x-omitempty": false - }, - "password": { - "type": "string", - "x-omitempty": false - }, - "server": { - "type": "string", - "x-omitempty": false - }, - "username": { - "type": "string", - "x-omitempty": false - } - } - }, - "hourOfTheDay": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - } - }, - "v1SystemBackupFtpConfigSpec": { - "description": "system backup config spec", - "type": "object", - "properties": { - "backupSpec": { - "description": "system backup config spec", - "type": "object", - "properties": { - "hourOfTheDay": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - } - }, - "ftp": { - "description": "system ftp config spec", - "type": "object", - "properties": { - "dir": { - "type": "string", - "x-omitempty": false - }, - "password": { - "type": "string", - "x-omitempty": false - }, - "server": { - "type": "string", - "x-omitempty": false - }, - "username": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1SystemBackupS3ConfigSpec": { - "description": "system backup config spec", - "type": "object", - "properties": { - "backupSpec": { - "description": "system backup config spec", - "type": "object", - "properties": { - "hourOfTheDay": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - } - }, - "s3": { - "description": "system backup s3 storage config spec", - "type": "object", - "properties": { - "accessKey": { - "type": "string", - "x-omitempty": false - }, - "bucket": { - "type": "string", - "x-omitempty": false - }, - "folder": { - "type": "string", - "x-omitempty": false - }, - "region": { - "type": "string", - "x-omitempty": false - }, - "secretKey": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1SystemBackupSpec": { - "description": "system backup config spec", - "type": "object", - "properties": { - "hourOfTheDay": { - "type": "integer", - "x-omitempty": false - }, - "interval": { - "type": "integer", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - } - }, - "v1SystemCertificateSpec": { - "description": "system smtp config spec", - "type": "object", - "properties": { - "caCert": { - "type": "string" - }, - "crt": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "key": { - "type": "string" - } - } - }, - "v1SystemConfigAuth": { - "description": "System config auth", - "properties": { - "enforceServiceAuthToken": { - "type": "boolean", - "x-omitempty": false - }, - "enforceTlsVerify": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1SystemConfigCluster": { - "description": "System config cluster", - "properties": { - "stableEndpointAccess": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1SystemConfigDomainSpec": { - "description": "system domain config spec", - "type": "object", - "properties": { - "apiServer": { - "type": "string" - }, - "derivedApiServer": { - "type": "string" - }, - "derivedRootDomain": { - "type": "string" - }, - "rootDomain": { - "type": "string" - }, - "urlProtocol": { - "type": "string" - } - } - }, - "v1SystemConfigStoreEntity": { - "type": "object", - "required": [ - "key", - "value" - ], - "properties": { - "key": { - "type": "string", - "x-omitempty": false - }, - "value": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SystemCryptoData": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "input": { - "type": "string" - }, - "result": { - "type": "string" - } - } - }, - "v1SystemCryptoInput": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "input": { - "type": "string" - } - } - }, - "v1SystemEdgeImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system edge account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - } - } - }, - "v1SystemEdgeImageSpec": { - "description": "system edge account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - }, - "v1SystemEdgeNativeImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system edge-native account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "stylusImagesEndpoint": { - "type": "string" - } - } - } - } - }, - "v1SystemEdgeNativeImageSpec": { - "description": "system edge-native account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "stylusImagesEndpoint": { - "type": "string" - } - } - }, - "v1SystemFeature": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "isAllowed": { - "description": "Flag which specifies if feature is allowed or not", - "type": "boolean", - "x-omitempty": false - }, - "key": { - "description": "Unique Feature key", - "type": "string" - } - } - } - } - }, - "v1SystemFeatures": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of system features", - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "isAllowed": { - "description": "Flag which specifies if feature is allowed or not", - "type": "boolean", - "x-omitempty": false - }, - "key": { - "description": "Unique Feature key", - "type": "string" - } - } - } - } - } - } - } - }, - "v1SystemFeaturesOperation": { - "type": "object", - "properties": { - "isAllowed": { - "description": "Flag which specifies if feature is allowed or not", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1SystemFeaturesSpec": { - "type": "object", - "properties": { - "description": { - "description": "Feature description", - "type": "string" - }, - "docLink": { - "description": "Feature doc link", - "type": "string" - }, - "isAllowed": { - "description": "Flag which specifies if feature is allowed or not", - "type": "boolean", - "x-omitempty": false - }, - "key": { - "description": "Unique Feature key", - "type": "string" - } - } - }, - "v1SystemFtpSpec": { - "description": "system ftp config spec", - "type": "object", - "properties": { - "dir": { - "type": "string", - "x-omitempty": false - }, - "password": { - "type": "string", - "x-omitempty": false - }, - "server": { - "type": "string", - "x-omitempty": false - }, - "username": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SystemGcpAccount": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system gcp account specifications", - "properties": { - "json": { - "type": "string" - } - } - } - } - }, - "v1SystemGcpImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system gcp account specifications", - "properties": { - "imageProject": { - "type": "string" - } - } - } - } - }, - "v1SystemGcpImageSpec": { - "description": "system gcp account specifications", - "properties": { - "imageProject": { - "type": "string" - } - } - }, - "v1SystemGcpSpec": { - "description": "system gcp account specifications", - "properties": { - "json": { - "type": "string" - } - } - }, - "v1SystemGitAuthSpec": { - "description": "system git auth account specifications", - "properties": { - "_type": { - "type": "string" - }, - "password": { - "type": "string" - }, - "token": { - "type": "string" - }, - "username": { - "description": "system git auth account specifications", - "properties": { - "_type": { - "type": "string" - }, - "password": { - "type": "string" - }, - "token": { - "type": "string" - }, - "username": { - "$ref": "#/definitions/v1SystemGitAuthSpec" - } - } - } - } - }, - "v1SystemGithubSsoSpec": { - "description": "system sso github config spec", - "type": "object", - "properties": { - "clientId": { - "type": "string" - }, - "clientSecretKey": { - "type": "string" - }, - "isEnabled": { - "type": "boolean" - }, - "logoUrl": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SystemKubectlSpec": { - "description": "system web kubectl config spec", - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "isEnabled": { - "type": "boolean" - } - } - }, - "v1SystemLibvirtImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system libvirt account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - } - } - }, - "v1SystemLibvirtImageSpec": { - "description": "system libvirt account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - }, - "v1SystemLoggerSpec": { - "description": "system logger config spec", - "type": "object", - "properties": { - "format": { - "type": "string" - }, - "level": { - "type": "string" - } - } - }, - "v1SystemMaasImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system maas account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - } - } - }, - "v1SystemMaasImageSpec": { - "description": "system maas account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - } - } - }, - "v1SystemOciImageRegistry": { - "description": "system web kubectl config spec", - "type": "object", - "properties": { - "baseContentPath": { - "type": "string" - }, - "caCert": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "mirrorRegistries": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "v1SystemOidcClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SystemOidcClientSpec": { - "description": "system sso oidc config spec", - "type": "object", - "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "logoUrl": { - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - }, - "v1SystemOpenstackImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system openstack account specifications", - "properties": { - "imagesHostEndpoint": { - "type": "string" - } - } - } - } - }, - "v1SystemOpenstackImageSpec": { - "description": "system openstack account specifications", - "properties": { - "imagesHostEndpoint": { - "type": "string" - } - } - }, - "v1SystemPasswordPolicySpec": { - "description": "system password policy", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "expiryDurationInDays": { - "type": "integer" - }, - "firstReminderInDays": { - "type": "integer" - }, - "isRegex": { - "type": "boolean" - }, - "minLength": { - "type": "integer" - }, - "minNumOfBlockLetters": { - "type": "integer" - }, - "minNumOfDigits": { - "type": "integer" - }, - "minNumOfSmallLetters": { - "type": "integer" - }, - "minNumOfSpecialCharacters": { - "type": "integer" - }, - "regex": { - "type": "string" - }, - "reminderFrequency": { - "type": "integer" - }, - "updateTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SystemPlan": { - "description": "system plan", - "properties": { - "freeCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "planLimit": { - "description": "System Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "slaCredits": { - "type": "array", - "items": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - } - }, - "systemStartDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SystemPlanCredit": { - "description": "Plan Credit", - "required": [ - "type" - ], - "properties": { - "cpuCoreHours": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "creditUid": { - "type": "string" - }, - "expiry": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string", - "enum": [ - "Pure", - "Alloy" - ] - } - } - }, - "v1SystemPlanLimit": { - "description": "System Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "v1SystemPlanLimitSpec": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "v1SystemPlanLimitUpdate": { - "description": "System Plan limit change update entity", - "properties": { - "planLimit": { - "description": "System Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - } - } - }, - "v1SystemProductUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "v1SystemProxySpec": { - "description": "system proxy config spec", - "type": "object", - "properties": { - "httpProxy": { - "type": "string" - }, - "httpsProxy": { - "type": "string" - }, - "noProxy": { - "type": "string" - } - } - }, - "v1SystemRateLimit": { - "description": "system rate-limit", - "properties": { - "isActive": { - "type": "boolean" - } - } - }, - "v1SystemRegistry": { - "description": "Registry configuration", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Registry configuration", - "type": "object", - "properties": { - "auth": { - "description": "Auth credentials of the registry", - "type": "object", - "properties": { - "password": { - "type": "string", - "format": "password" - }, - "tls": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "token": { - "type": "string", - "format": "password" - }, - "type": { - "type": "string", - "enum": [ - "noAuth", - "basic", - "token" - ] - }, - "username": { - "type": "string" - } - } - }, - "endpoint": { - "type": "string" - } - } - } - } - }, - "v1SystemResourceLimit": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "maxLimit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - }, - "v1SystemResourceLimits": { - "description": "System resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", - "properties": { - "resources": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "maxLimit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - } - } - } - }, - "v1SystemRetentionPolicy": { - "description": "system retention policy", - "type": "object", - "properties": { - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - } - }, - "v1SystemReverseProxy": { - "description": "system config reverse proxy", - "properties": { - "caCert": { - "type": "string" - }, - "clientCert": { - "type": "string" - }, - "clientKey": { - "type": "string" - }, - "port": { - "type": "integer" - }, - "protocol": { - "type": "string", - "enum": [ - "http", - "https" - ] - }, - "server": { - "type": "string" - }, - "vHostPort": { - "type": "integer" - } - } - }, - "v1SystemS3Spec": { - "description": "system backup s3 storage config spec", - "type": "object", - "properties": { - "accessKey": { - "type": "string", - "x-omitempty": false - }, - "bucket": { - "type": "string", - "x-omitempty": false - }, - "folder": { - "type": "string", - "x-omitempty": false - }, - "region": { - "type": "string", - "x-omitempty": false - }, - "secretKey": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1SystemScarSpec": { - "description": "system scar config spec", - "type": "object", - "properties": { - "baseContentPath": { - "type": "string" - }, - "caCert": { - "type": "string" - }, - "endpoint": { - "type": "string" - }, - "insecureVerify": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "v1SystemScarValidationResponse": { - "description": "system proxy config spec", - "type": "object", - "properties": { - "spectroVersion": { - "type": "string" - } - } - }, - "v1SystemSecurityMode": { - "description": "System service mode", - "properties": { - "securityMode": { - "type": "string" - } - } - }, - "v1SystemServiceLogin": { - "description": "System service login input", - "type": "object", - "properties": { - "authToken": { - "description": "authToken helps in two step verification for the authorization.", - "type": "string" - }, - "isSystem": { - "type": "boolean" - }, - "overlordUid": { - "type": "string" - }, - "serviceName": { - "type": "string" - }, - "serviceVersion": { - "type": "string" - }, - "spectroClusterUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1SystemSmtpSpec": { - "description": "system smtp config spec", - "type": "object", - "properties": { - "fromEmailId": { - "type": "string" - }, - "insecureSkipVerifyTls": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "smtpPort": { - "type": "integer" - }, - "smtpServer": { - "type": "string" - }, - "userName": { - "type": "string" - } - } - }, - "v1SystemSsoAuthSpec": { - "description": "system sso config spec", - "type": "object", - "properties": { - "github": { - "description": "system sso github config spec", - "type": "object", - "properties": { - "clientId": { - "type": "string" - }, - "clientSecretKey": { - "type": "string" - }, - "isEnabled": { - "type": "boolean" - }, - "logoUrl": { - "type": "string", - "x-omitempty": false - } - } - }, - "oidcAuthSpecs": { - "type": "object", - "additionalProperties": { - "description": "system sso oidc config spec", - "type": "object", - "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "logoUrl": { - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - } - } - }, - "v1SystemSsoSpec": { - "description": "system sso config spec", - "type": "object", - "properties": { - "acsUrlRoot": { - "type": "string" - }, - "acsUrlScheme": { - "type": "string" - }, - "apiVersion": { - "type": "string" - }, - "audienceUrl": { - "type": "string" - }, - "authSpec": { - "description": "system sso config spec", - "type": "object", - "properties": { - "github": { - "description": "system sso github config spec", - "type": "object", - "properties": { - "clientId": { - "type": "string" - }, - "clientSecretKey": { - "type": "string" - }, - "isEnabled": { - "type": "boolean" - }, - "logoUrl": { - "type": "string", - "x-omitempty": false - } - } - }, - "oidcAuthSpecs": { - "type": "object", - "additionalProperties": { - "description": "system sso oidc config spec", - "type": "object", - "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "logoUrl": { - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - } - } - } - } - } - }, - "entityId": { - "type": "string" - } - } - }, - "v1SystemStartDate": { - "description": "system start date", - "properties": { - "systemStartDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SystemStorageS3ConfigSpec": { - "description": "system storage s3 config spec", - "type": "object", - "properties": { - "isEnabled": { - "type": "boolean" - }, - "retentionPolicy": { - "description": "system retention policy", - "type": "object", - "properties": { - "retentionPeriod": { - "type": "integer", - "x-omitempty": false - } - } - }, - "s3": { - "description": "system backup s3 storage config spec", - "type": "object", - "properties": { - "accessKey": { - "type": "string", - "x-omitempty": false - }, - "bucket": { - "type": "string", - "x-omitempty": false - }, - "folder": { - "type": "string", - "x-omitempty": false - }, - "region": { - "type": "string", - "x-omitempty": false - }, - "secretKey": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1SystemTencentAccount": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system tencent account specifications", - "properties": { - "secretId": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - } - } - }, - "v1SystemTencentSpec": { - "description": "system tencent account specifications", - "properties": { - "secretId": { - "type": "string" - }, - "secretKey": { - "type": "string" - } - } - }, - "v1SystemTimeseriesMetrics": { - "description": "system timeseries metrics config", - "type": "object", - "properties": { - "archivalInterval": { - "type": "integer" - }, - "batchInterval": { - "type": "integer" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer" - } - } - }, - "v1SystemTimeseriesSpec": { - "description": "system timeseries config spec", - "type": "object", - "properties": { - "machine": { - "description": "system timeseries metrics config", - "type": "object", - "properties": { - "archivalInterval": { - "type": "integer" - }, - "batchInterval": { - "type": "integer" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer" - } - } - }, - "pod": { - "description": "system timeseries metrics config", - "type": "object", - "properties": { - "archivalInterval": { - "type": "integer" - }, - "batchInterval": { - "type": "integer" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "retentionPeriod": { - "type": "integer" - } - } - } - } - }, - "v1SystemUsage": { - "description": "System usage billing object", - "properties": { - "planLimit": { - "description": "Monthly Plan Limit", - "properties": { - "alloy": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - }, - "isOnDemand": { - "description": "is onDemand plan and has no limit", - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "description": "is unlimited cpu core hours", - "type": "boolean", - "x-omitempty": false - }, - "pure": { - "description": "Monthly Plan Limit spec", - "properties": { - "cpuCoreHours": { - "description": "cpu cores hours", - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "overageLimitPercentage": { - "description": "overage limit in percentage", - "type": "integer", - "format": "int8", - "default": 25, - "x-omitempty": false - }, - "warnLimitPercentage": { - "description": "warning limit in percentage", - "type": "integer", - "format": "int8", - "default": 90, - "x-omitempty": false - } - } - } - } - }, - "usageBillingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "yearlyUsages": { - "description": "List of every year system usage", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Yearly usage object", - "properties": { - "billingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "monthlyUsages": { - "description": "List of monthly usages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Monthly usage object", - "properties": { - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tenantUsages": { - "description": "List of tenants usage", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Tenant usage object", - "properties": { - "orgName": { - "description": "Organization name", - "type": "string" - }, - "tenantUid": { - "description": "Tenant uid", - "type": "string" - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - } - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - } - }, - "productUsages": { - "description": "Product usage", - "properties": { - "alloyUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pureUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - } - } - } - }, - "v1SystemUserMe": { - "description": "User information wrt permissions", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User specifications", - "properties": { - "adminType": { - "description": "Admin type", - "type": "string" - }, - "emailId": { - "description": "System User's email id", - "type": "string" - } - } - }, - "status": { - "description": "User status with permissions", - "properties": { - "isEmailSet": { - "type": "boolean", - "x-omitempty": false - }, - "isEmailVerified": { - "type": "boolean", - "x-omitempty": false - }, - "isMfaEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "isPasswordReset": { - "type": "boolean", - "x-omitempty": false - }, - "lastEmailUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastEmailVerifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastLoginTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastPasswordUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1SystemUserMeStatus": { - "description": "User status with permissions", - "properties": { - "isEmailSet": { - "type": "boolean", - "x-omitempty": false - }, - "isEmailVerified": { - "type": "boolean", - "x-omitempty": false - }, - "isMfaEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "isPasswordReset": { - "type": "boolean", - "x-omitempty": false - }, - "lastEmailUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastEmailVerifiedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastLoginTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastPasswordUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1SystemUserSpec": { - "description": "User specifications", - "properties": { - "adminType": { - "description": "Admin type", - "type": "string" - }, - "emailId": { - "description": "System User's email id", - "type": "string" - } - } - }, - "v1SystemVersionInfo": { - "description": "system version info", - "type": "object", - "properties": { - "version": { - "type": "string" - } - } - }, - "v1SystemVsphereImage": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "spec": { - "description": "system vsphere account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "overlordOvaLocation": { - "type": "string" - } - } - } - } - }, - "v1SystemVsphereImageSpec": { - "description": "system vsphere account specifications", - "properties": { - "caCert": { - "type": "string" - }, - "imagesHostEndpoint": { - "type": "string" - }, - "insecureSkipVerify": { - "type": "boolean" - }, - "overlordOvaLocation": { - "type": "string" - } - } - }, - "v1TagFilter": { - "description": "Tag Filter create spec", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Filter create spec", - "type": "object", - "properties": { - "filterGroup": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "key": { - "type": "string" - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq" - ] - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1TagFilterGroup": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "key": { - "type": "string" - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq" - ] - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1TagFilterItem": { - "properties": { - "key": { - "type": "string" - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq" - ] - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1TagFilterSpec": { - "description": "Filter create spec", - "type": "object", - "properties": { - "filterGroup": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "key": { - "type": "string" - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq" - ] - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1TagFilterSummary": { - "description": "Filter summary object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Filter create spec", - "type": "object", - "properties": { - "filterGroup": { - "properties": { - "conjunction": { - "type": "string", - "enum": [ - "and", - "or" - ], - "x-nullable": true - }, - "filters": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "key": { - "type": "string" - }, - "negation": { - "type": "boolean" - }, - "operator": { - "type": "string", - "enum": [ - "eq" - ] - }, - "values": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1Taint": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - }, - "v1Team": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - }, - "v1TeamPatch": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - }, - "v1TeamRoleMap": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "teamId": { - "type": "string" - } - } - }, - "v1TeamSpec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1TeamSpecSummary": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1TeamStatus": { - "description": "Team status", - "type": "object" - }, - "v1TeamSummary": { - "description": "Team summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - }, - "v1TeamSummarySortFields": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "v1TeamSummarySortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1TeamTenantRolesEntity": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1TeamTenantRolesUpdate": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1Teams": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1TeamsBatch": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Team information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Team specifications", - "properties": { - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "sources": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - }, - "v1TeamsFilterSpec": { - "description": "Teams filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "v1TeamsMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Object identity meta", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1TeamsSummary": { - "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Team summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1TeamsSummaryList": { - "description": "Returns Team summary", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Team summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "projects": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Team status", - "type": "object" - } - } - } - } - } - }, - "v1TeamsSummarySpec": { - "description": "Teams filter summary spec", - "properties": { - "filter": { - "description": "Teams filter spec", - "properties": { - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1Tenant": { - "description": "Tenant", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Tenant Spec", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "authType": { - "type": "string" - }, - "defaultLoginMode": { - "type": "string" - }, - "orgEmailId": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "planUid": { - "type": "string" - } - } - }, - "status": { - "description": "Tenant Status", - "type": "object", - "properties": { - "cleanUpStatus": { - "description": "Tenant CleanUp Status", - "type": "object", - "properties": { - "cleanUpError": { - "type": "string" - }, - "cleanUpStages": { - "type": "string" - }, - "cleanUpTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "isInProgress": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "toBeDeleted": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1TenantActivate": { - "description": "Activate/Deactivate tenant", - "type": "object", - "properties": { - "isActive": { - "type": "boolean", - "default": true - } - } - }, - "v1TenantActivity": { - "description": "Active tenant and clusters data", - "type": "object", - "properties": { - "clustersInfo": { - "description": "Active clusters information", - "type": "object", - "properties": { - "clustersMeta": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Active cluster meta", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "clusterType": { - "type": "string" - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectName": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "totalActiveClusters": { - "type": "number", - "format": "int64" - }, - "totalActiveGreenFieldClusters": { - "type": "number", - "format": "int64" - }, - "totalActiveImportedClusters": { - "type": "number", - "format": "int64" - }, - "totalClustersDeleted": { - "type": "number", - "format": "int64" - }, - "totalClustersDeployed": { - "type": "number", - "format": "int64" - } - } - }, - "org": { - "type": "string" - }, - "planType": { - "type": "string" - }, - "totalProjects": { - "type": "number", - "format": "int64" - }, - "totalUsers": { - "type": "number", - "format": "int64" - }, - "uid": { - "type": "string" - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Active user data", - "type": "object", - "properties": { - "lastLogin": { - "type": "string" - }, - "lastLoginTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1TenantAddressPatch": { - "description": "Tenant Address", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - }, - "v1TenantAssetCert": { - "description": "tenant cert", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - }, - "v1TenantAssetCerts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tenant cert", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "x-omitempty": false - }, - "isCA": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "v1TenantBasicEntity": { - "description": "Tenant Basic param", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "orgName": { - "type": "string" - } - } - }, - "v1TenantCleanUpStatus": { - "description": "Tenant CleanUp Status", - "type": "object", - "properties": { - "cleanUpError": { - "type": "string" - }, - "cleanUpStages": { - "type": "string" - }, - "cleanUpTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "isInProgress": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1TenantClusterSettings": { - "properties": { - "nodesAutoRemediationSetting": { - "properties": { - "disableNodesAutoRemediation": { - "type": "boolean", - "x-omitempty": false - }, - "isEnabled": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1TenantContractSpec": { - "description": "Tenant contract settings", - "type": "object", - "required": [ - "isRequired", - "isAccepted" - ], - "properties": { - "acceptedTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "isAccepted": { - "description": "If the contract is accepted offline, then set this field to true", - "type": "boolean" - }, - "isRequired": { - "description": "Is the contract required, for on-prem installation it will be false", - "type": "boolean" - } - } - }, - "v1TenantDomains": { - "description": "Tenant domains", - "type": "object", - "properties": { - "domains": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1TenantEmailPatch": { - "description": "Tenant EmailId", - "type": "object", - "properties": { - "emailId": { - "type": "string" - } - } - }, - "v1TenantEnableClusterGroup": { - "description": "Enable or Disable cluster group for a tenant", - "properties": { - "hideSystemClusterGroups": { - "type": "boolean", - "x-omitempty": false - }, - "isClusterGroupEnabled": { - "description": "Deprecated. Use hideSystemClusterGroups field", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1TenantEntity": { - "description": "Tenant Entity", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Tenant Entity input", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "authType": { - "type": "string" - }, - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string", - "default": "devops", - "enum": [ - "dev", - "devops" - ] - }, - "orgEmailId": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "ssoApp": { - "type": "string" - } - } - } - } - }, - "v1TenantFreemium": { - "description": "Tenant freemium configuration", - "properties": { - "activeClustersLimit": { - "type": "integer", - "x-omitempty": false - }, - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "overageUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "totalUsageLimit": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1TenantFreemiumUsage": { - "type": "object", - "properties": { - "isFreemium": { - "type": "boolean", - "x-omitempty": false - }, - "isUnlimited": { - "type": "boolean", - "x-omitempty": false - }, - "limit": { - "type": "object", - "properties": { - "activeClusters": { - "type": "integer", - "x-omitempty": false - }, - "overageUsage": { - "type": "number", - "x-omitempty": false - }, - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "usage": { - "type": "object", - "properties": { - "usage": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - } - } - }, - "v1TenantOidcClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "v1TenantOidcClientSpec": { - "description": "Tenant", - "type": "object", - "properties": { - "callbackUrl": { - "type": "string", - "x-omitempty": false - }, - "clientId": { - "type": "string", - "x-omitempty": false - }, - "clientSecret": { - "type": "string", - "x-omitempty": false - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuerTls": { - "type": "object", - "properties": { - "caCertificateBase64": { - "type": "string", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "default": false, - "x-omitempty": false - } - } - }, - "issuerUrl": { - "description": "the issuer is the URL identifier for the service", - "type": "string", - "x-omitempty": false - }, - "logoutUrl": { - "type": "string", - "x-omitempty": false - }, - "requiredClaims": { - "type": "object", - "properties": { - "Email": { - "type": "string", - "x-omitempty": false - }, - "FirstName": { - "type": "string", - "x-omitempty": false - }, - "LastName": { - "type": "string", - "x-omitempty": false - }, - "SpectroTeam": { - "type": "string", - "x-omitempty": false - } - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - }, - "x-omitempty": false - }, - "scopesDelimiter": { - "type": "string", - "x-omitempty": false - }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1TenantPasswordPolicyEntity": { - "description": "Tenant Password Policy Entity", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "expiryDurationInDays": { - "type": "integer" - }, - "firstReminderInDays": { - "type": "integer" - }, - "isRegex": { - "type": "boolean" - }, - "minLength": { - "type": "integer" - }, - "minNumOfBlockLetters": { - "type": "integer" - }, - "minNumOfDigits": { - "type": "integer" - }, - "minNumOfSmallLetters": { - "type": "integer" - }, - "minNumOfSpecialCharacters": { - "type": "integer" - }, - "regex": { - "type": "string" - }, - "updateTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1TenantResourceLimit": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "label": { - "type": "string" - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "maxLimit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - }, - "v1TenantResourceLimitEntity": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - }, - "v1TenantResourceLimits": { - "description": "Tenant resource limits", - "properties": { - "resources": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "label": { - "type": "string" - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - }, - "maxLimit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - } - } - } - }, - "v1TenantResourceLimitsEntity": { - "description": "Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", - "properties": { - "resources": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "kind": { - "type": "string", - "enum": [ - "user", - "project", - "apiKey", - "team", - "role", - "cloudaccount", - "clusterprofile", - "workspace", - "registry", - "privategateway", - "location", - "certificate", - "macro", - "sshkey", - "alert", - "spectrocluster", - "edgehost", - "appprofile", - "appdeployment", - "edgetoken", - "clustergroup", - "filter", - "systemadmin" - ] - }, - "limit": { - "type": "number", - "format": "int64", - "x-omitempty": false - } - } - } - } - } - }, - "v1TenantSamlRequestSpec": { - "description": "Tenant", - "type": "object", - "properties": { - "attributes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attributeValue": { - "type": "string" - }, - "mappedAttribute": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nameFormat": { - "type": "string" - } - } - } - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - } - }, - "federationMetadata": { - "type": "string" - }, - "identityProvider": { - "type": "string" - }, - "isSingleLogoutEnabled": { - "type": "boolean" - }, - "isSsoEnabled": { - "type": "boolean" - }, - "nameIdFormat": { - "type": "string" - }, - "syncSsoTeams": { - "type": "boolean" - } - } - }, - "v1TenantSamlSpec": { - "description": "Tenant", - "type": "object", - "properties": { - "acsUrl": { - "type": "string" - }, - "attributes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "attributeValue": { - "type": "string" - }, - "mappedAttribute": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nameFormat": { - "type": "string" - } - } - } - }, - "audienceUrl": { - "description": "same as entity id", - "type": "string" - }, - "certificate": { - "description": "certificate for slo", - "type": "string" - }, - "defaultTeams": { - "type": "array", - "items": { - "type": "string" - } - }, - "entityId": { - "type": "string" - }, - "federationMetadata": { - "type": "string" - }, - "identityProvider": { - "type": "string" - }, - "isSingleLogoutEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "isSsoEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "issuer": { - "description": "same as entity id", - "type": "string" - }, - "nameIdFormat": { - "type": "string" - }, - "serviceProviderMetadata": { - "type": "string" - }, - "singleLogoutUrl": { - "description": "slo url", - "type": "string", - "x-omitempty": false - }, - "syncSsoTeams": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1TenantSamlSpecAttribute": { - "type": "object", - "properties": { - "attributeValue": { - "type": "string" - }, - "mappedAttribute": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nameFormat": { - "type": "string" - } - } - }, - "v1TenantSelfSignUpSpec": { - "description": "Tenant sign up data", - "type": "object", - "required": [ - "firstName", - "lastName", - "emailId", - "orgName" - ], - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string", - "default": "devops", - "enum": [ - "dev", - "devops" - ] - }, - "notifyTenantAdmin": { - "type": "boolean" - }, - "orgName": { - "type": "string" - } - } - }, - "v1TenantSpec": { - "description": "Tenant Spec", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "authType": { - "type": "string" - }, - "defaultLoginMode": { - "type": "string" - }, - "orgEmailId": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "planUid": { - "type": "string" - } - } - }, - "v1TenantSpecEntity": { - "description": "Tenant Entity input", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "authType": { - "type": "string" - }, - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string", - "default": "devops", - "enum": [ - "dev", - "devops" - ] - }, - "orgEmailId": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "ssoApp": { - "type": "string" - } - } - }, - "v1TenantSsoAuthProvidersEntity": { - "type": "object", - "properties": { - "isEnabled": { - "type": "boolean", - "x-omitempty": false - }, - "ssoLogins": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1TenantStatus": { - "description": "Tenant Status", - "type": "object", - "properties": { - "cleanUpStatus": { - "description": "Tenant CleanUp Status", - "type": "object", - "properties": { - "cleanUpError": { - "type": "string" - }, - "cleanUpStages": { - "type": "string" - }, - "cleanUpTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "isInProgress": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "toBeDeleted": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1TenantUpgradeSettingsEntity": { - "properties": { - "enableLock": { - "type": "boolean", - "x-omitempty": false - }, - "supportedVersionsRange": { - "type": "integer", - "x-omitempty": false - } - } - }, - "v1TenantUsage": { - "description": "Tenant usage object", - "properties": { - "orgName": { - "description": "Organization name", - "type": "string" - }, - "tenantUid": { - "description": "Tenant uid", - "type": "string" - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - }, - "v1Tenants": { - "description": "Tenants list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Tenant", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Tenant Spec", - "type": "object", - "properties": { - "address": { - "description": "Tenant Address", - "type": "object", - "properties": { - "addressLine1": { - "type": "string" - }, - "addressLine2": { - "type": "string" - }, - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "pincode": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "authType": { - "type": "string" - }, - "defaultLoginMode": { - "type": "string" - }, - "orgEmailId": { - "type": "string" - }, - "orgName": { - "type": "string" - }, - "planUid": { - "type": "string" - } - } - }, - "status": { - "description": "Tenant Status", - "type": "object", - "properties": { - "cleanUpStatus": { - "description": "Tenant CleanUp Status", - "type": "object", - "properties": { - "cleanUpError": { - "type": "string" - }, - "cleanUpStages": { - "type": "string" - }, - "cleanUpTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "cleanedResources": { - "type": "array", - "items": { - "type": "string" - } - }, - "isCompleted": { - "type": "boolean", - "x-omitempty": false - }, - "isInProgress": { - "type": "boolean", - "x-omitempty": false - } - } - }, - "isActive": { - "type": "boolean", - "x-omitempty": false - }, - "toBeDeleted": { - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1TenantsAccountsNas": { - "type": "object", - "properties": { - "failures": { - "type": "array", - "items": { - "type": "string" - } - }, - "success": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1TenantsActivities": { - "description": "Active tenants and clusters data", - "type": "object", - "properties": { - "tenants": { - "type": "object", - "additionalProperties": { - "description": "Active tenant and clusters data", - "type": "object", - "properties": { - "clustersInfo": { - "description": "Active clusters information", - "type": "object", - "properties": { - "clustersMeta": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Active cluster meta", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - }, - "clusterType": { - "type": "string" - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectName": { - "type": "string" - }, - "state": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Running", - "Deleting", - "Deleted", - "Error", - "Importing" - ] - }, - "uid": { - "type": "string" - } - } - } - }, - "totalActiveClusters": { - "type": "number", - "format": "int64" - }, - "totalActiveGreenFieldClusters": { - "type": "number", - "format": "int64" - }, - "totalActiveImportedClusters": { - "type": "number", - "format": "int64" - }, - "totalClustersDeleted": { - "type": "number", - "format": "int64" - }, - "totalClustersDeployed": { - "type": "number", - "format": "int64" - } - } - }, - "org": { - "type": "string" - }, - "planType": { - "type": "string" - }, - "totalProjects": { - "type": "number", - "format": "int64" - }, - "totalUsers": { - "type": "number", - "format": "int64" - }, - "uid": { - "type": "string" - }, - "users": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Active user data", - "type": "object", - "properties": { - "lastLogin": { - "type": "string" - }, - "lastLoginTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1TencentAccount": { - "description": "Tencent cloud account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "secretId", - "secretKey" - ], - "properties": { - "secretId": { - "description": "Tencent api secretID", - "type": "string" - }, - "secretKey": { - "description": "Tencent api secret key", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1TencentAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Tencent cloud account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "secretId", - "secretKey" - ], - "properties": { - "secretId": { - "description": "Tencent api secretID", - "type": "string" - }, - "secretKey": { - "description": "Tencent api secret key", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1TencentAvailabilityZone": { - "description": "Tencent availability zone", - "type": "object", - "properties": { - "name": { - "description": "Tencent availability zone name", - "type": "string" - }, - "state": { - "description": "Tencent availability zone state", - "type": "string" - }, - "zoneId": { - "description": "Tencent availability zone id", - "type": "string" - } - } - }, - "v1TencentAvailabilityZones": { - "description": "List of Tencent Availability zones", - "type": "object", - "required": [ - "zones" - ], - "properties": { - "zones": { - "type": "array", - "items": { - "description": "Tencent availability zone", - "type": "object", - "properties": { - "name": { - "description": "Tencent availability zone name", - "type": "string" - }, - "state": { - "description": "Tencent availability zone state", - "type": "string" - }, - "zoneId": { - "description": "Tencent availability zone id", - "type": "string" - } - } - } - } - } - }, - "v1TencentCloudAccount": { - "type": "object", - "required": [ - "secretId", - "secretKey" - ], - "properties": { - "secretId": { - "description": "Tencent api secretID", - "type": "string" - }, - "secretKey": { - "description": "Tencent api secret key", - "type": "string" - } - } - }, - "v1TencentCloudClusterConfigEntity": { - "description": "Tencent cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "endpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - } - } - }, - "v1TencentCloudConfig": { - "description": "TencentCloudConfig is the Schema for the tencentcloudconfigs API", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "endpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "properties": { - "additionalLabels": { - "description": "AdditionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - } - } - }, - "v1TencentCloudConfigSpec": { - "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", - "type": "object", - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "endpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "properties": { - "additionalLabels": { - "description": "AdditionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1TencentClusterConfig": { - "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", - "type": "object", - "required": [ - "region" - ], - "properties": { - "endpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "region": { - "type": "string" - }, - "sshKeyIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "vpcID": { - "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", - "type": "string" - } - } - }, - "v1TencentInstanceTypes": { - "description": "List of Tencent instance types", - "type": "object", - "properties": { - "instanceTypes": { - "type": "array", - "items": { - "description": "Cloud Instance type details", - "type": "object", - "properties": { - "category": { - "description": "Category of instance type", - "type": "string", - "x-go-name": "Category" - }, - "cost": { - "description": "Instance cost entity", - "type": "object", - "properties": { - "price": { - "description": "Array of cloud instance price", - "type": "array", - "items": { - "description": "Cloud instance price", - "type": "object", - "properties": { - "onDemand": { - "description": "OnDemand price of instance", - "type": "number", - "format": "double" - }, - "os": { - "description": "Os associated with instance price. Allowed values - [linux, windows]", - "type": "string", - "enum": [ - "linux", - "windows" - ] - }, - "spot": { - "description": "Spot price of instance", - "type": "number", - "format": "double" - } - } - } - } - } - }, - "cpu": { - "description": "Cpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Cpu" - }, - "gpu": { - "description": "Gpu of instance type", - "type": "number", - "format": "double", - "x-go-name": "Gpu" - }, - "memory": { - "description": "Memory of instance type", - "type": "number", - "format": "double", - "x-go-name": "Memory" - }, - "nonSupportedZones": { - "description": "Non supported zones of the instance in a particular region", - "type": "array", - "items": { - "type": "string" - } - }, - "price": { - "description": "Price of instance type", - "type": "number", - "format": "double", - "x-go-name": "Price" - }, - "supportedArchitectures": { - "description": "Supported architecture of the instance", - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "description": "Type of instance type", - "type": "string", - "x-go-name": "Type" - } - } - } - } - } - }, - "v1TencentKeypair": { - "description": "Tencent Keypair entity", - "type": "object", - "properties": { - "id": { - "description": "Tencent keypair id", - "type": "string" - }, - "name": { - "description": "Tencent keypair name", - "type": "string" - }, - "publickey": { - "description": "Tencent public key", - "type": "string" - } - } - }, - "v1TencentKeypairs": { - "description": "List of Tencent keypairs", - "type": "object", - "properties": { - "keypairs": { - "type": "array", - "items": { - "description": "Tencent Keypair entity", - "type": "object", - "properties": { - "id": { - "description": "Tencent keypair id", - "type": "string" - }, - "name": { - "description": "Tencent keypair name", - "type": "string" - }, - "publickey": { - "description": "Tencent public key", - "type": "string" - } - } - } - } - } - }, - "v1TencentMachine": { - "description": "Tencent cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Tencent cloud VM definition spec", - "type": "object", - "required": [ - "nics", - "instanceType", - "imageId" - ], - "properties": { - "dnsName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "Tencent network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "securityGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "subnetId": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vpcId": { - "type": "string" - }, - "zoneId": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1TencentMachinePoolCloudConfigEntity": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "v1TencentMachinePoolConfig": { - "type": "object", - "properties": { - "additionalLabels": { - "description": "AdditionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "description": "AZs is only used for dynamic placement", - "type": "array", - "items": { - "type": "string" - } - }, - "instanceConfig": { - "properties": { - "category": { - "type": "string" - }, - "cpuSet": { - "type": "integer", - "format": "int64" - }, - "diskGiB": { - "type": "integer", - "format": "int64" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine", - "type": "integer", - "format": "int32" - } - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1TencentMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "properties": { - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "description": "instance type", - "type": "string" - }, - "rootDeviceSize": { - "description": "rootDeviceSize in GBs", - "type": "integer", - "format": "int64", - "maximum": 2000, - "minimum": 1 - }, - "subnetIds": { - "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1TencentMachineSpec": { - "description": "Tencent cloud VM definition spec", - "type": "object", - "required": [ - "nics", - "instanceType", - "imageId" - ], - "properties": { - "dnsName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "Tencent network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "securityGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "subnetId": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vpcId": { - "type": "string" - }, - "zoneId": { - "type": "string" - } - } - }, - "v1TencentMachines": { - "description": "Tencent machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Tencent cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Tencent cloud VM definition spec", - "type": "object", - "required": [ - "nics", - "instanceType", - "imageId" - ], - "properties": { - "dnsName": { - "type": "string" - }, - "imageId": { - "type": "string" - }, - "instanceType": { - "type": "string" - }, - "nics": { - "type": "array", - "items": { - "description": "Tencent network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - } - }, - "securityGroups": { - "type": "array", - "items": { - "type": "string" - } - }, - "subnetId": { - "type": "string" - }, - "type": { - "type": "string" - }, - "vpcId": { - "type": "string" - }, - "zoneId": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1TencentNic": { - "description": "Tencent network interface", - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - }, - "publicIp": { - "type": "string" - } - } - }, - "v1TencentRegion": { - "description": "Tencent region entity", - "type": "object", - "properties": { - "name": { - "description": "Name of tencent region", - "type": "string" - }, - "state": { - "description": "State of tencent region", - "type": "string" - } - } - }, - "v1TencentRegions": { - "description": "List of tencent regions", - "type": "object", - "required": [ - "regions" - ], - "properties": { - "regions": { - "description": "Tencent regions entity", - "type": "array", - "items": { - "description": "Tencent region entity", - "type": "object", - "properties": { - "name": { - "description": "Name of tencent region", - "type": "string" - }, - "state": { - "description": "State of tencent region", - "type": "string" - } - } - } - } - } - }, - "v1TencentSecurityGroup": { - "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering", - "type": "object", - "properties": { - "id": { - "description": "Tencent security group id", - "type": "string" - }, - "isDefault": { - "description": "Whether it is the default security group, the default security group does not support deletion.", - "type": "boolean" - }, - "name": { - "description": "Tencent security group name", - "type": "string" - }, - "projectId": { - "description": "Tencent security group associated to a project", - "type": "string" - } - } - }, - "v1TencentSecurityGroups": { - "description": "List of Tencent security groups", - "type": "object", - "properties": { - "groups": { - "type": "array", - "items": { - "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering", - "type": "object", - "properties": { - "id": { - "description": "Tencent security group id", - "type": "string" - }, - "isDefault": { - "description": "Whether it is the default security group, the default security group does not support deletion.", - "type": "boolean" - }, - "name": { - "description": "Tencent security group name", - "type": "string" - }, - "projectId": { - "description": "Tencent security group associated to a project", - "type": "string" - } - } - } - } - } - }, - "v1TencentStorageTypes": { - "description": "List of Tencent storage types", - "type": "object", - "properties": { - "storageTypes": { - "type": "array", - "items": { - "description": "Cloud cloud Storage type details", - "type": "object", - "properties": { - "cost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "iopsCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - }, - "kind": { - "description": "kind of storage type", - "type": "string" - }, - "name": { - "description": "Name of the storage type", - "type": "string" - }, - "throughputCost": { - "description": "Cloud storage cost", - "type": "object", - "properties": { - "discountedUsage": { - "description": "Cloud storage upper limit which is free.", - "type": "string" - }, - "price": { - "description": "Array of cloud storage range prices", - "type": "array", - "items": { - "description": "Cloud storage price within an upper limit.", - "type": "object", - "properties": { - "limit": { - "description": "Upper limit of cloud storage usage", - "type": "string" - }, - "price": { - "description": "Price of cloud storage type", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "v1TencentSubnet": { - "description": "Tencent Subnet entity", - "type": "object", - "properties": { - "az": { - "description": "Availability zone associated with tencent subnet", - "type": "string" - }, - "cidrBlock": { - "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", - "type": "string" - }, - "name": { - "description": "Tencent subnet name", - "type": "string" - }, - "subnetId": { - "description": "Tencent subnet id", - "type": "string" - } - } - }, - "v1TencentVpc": { - "description": "Tencent VPC entity", - "type": "object", - "required": [ - "vpcId" - ], - "properties": { - "cidrBlock": { - "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", - "type": "string" - }, - "name": { - "description": "Tencent VPC name", - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "description": "Tencent Subnet entity", - "type": "object", - "properties": { - "az": { - "description": "Availability zone associated with tencent subnet", - "type": "string" - }, - "cidrBlock": { - "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", - "type": "string" - }, - "name": { - "description": "Tencent subnet name", - "type": "string" - }, - "subnetId": { - "description": "Tencent subnet id", - "type": "string" - } - } - } - }, - "vpcId": { - "description": "Tencent VPC id", - "type": "string" - } - } - }, - "v1TencentVpcs": { - "description": "List of Tencent VPCs", - "type": "object", - "required": [ - "vpcs" - ], - "properties": { - "vpcs": { - "type": "array", - "items": { - "description": "Tencent VPC entity", - "type": "object", - "required": [ - "vpcId" - ], - "properties": { - "cidrBlock": { - "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", - "type": "string" - }, - "name": { - "description": "Tencent VPC name", - "type": "string" - }, - "subnets": { - "type": "array", - "items": { - "description": "Tencent Subnet entity", - "type": "object", - "properties": { - "az": { - "description": "Availability zone associated with tencent subnet", - "type": "string" - }, - "cidrBlock": { - "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", - "type": "string" - }, - "name": { - "description": "Tencent subnet name", - "type": "string" - }, - "subnetId": { - "description": "Tencent subnet id", - "type": "string" - } - } - } - }, - "vpcId": { - "description": "Tencent VPC id", - "type": "string" - } - } - } - } - } - }, - "v1TierPrice": { - "description": "tier price", - "properties": { - "alloyPricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - }, - "purePricing": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "tier price range", - "properties": { - "discount": { - "type": "number", - "format": "int64" - }, - "startFrom": { - "type": "number", - "format": "float64" - }, - "unitAmount": { - "type": "number", - "format": "float64" - }, - "upTo": { - "type": "number", - "format": "float64" - }, - "upToInfinity": { - "type": "boolean" - } - } - } - } - } - }, - "v1Time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "v1TkeEndpointAccess": { - "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", - "type": "object", - "properties": { - "IsExtranet": { - "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", - "type": "boolean" - }, - "private": { - "description": "Private points VPC-internal control plane access to the private endpoint", - "type": "boolean" - }, - "privateCIDR": { - "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", - "type": "string" - }, - "public": { - "description": "Public controls whether control plane endpoints are publicly accessible", - "type": "boolean" - }, - "publicCIDRs": { - "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", - "type": "array", - "items": { - "type": "string" - } - }, - "securityGroup": { - "description": "Tencent security group", - "type": "string" - }, - "subnetId": { - "description": "Tencent Subnet", - "type": "string" - } - } - }, - "v1TlsConfiguration": { - "description": "TLS configuration", - "type": "object", - "properties": { - "ca": { - "type": "string" - }, - "certificate": { - "type": "string" - }, - "enabled": { - "type": "boolean", - "x-omitempty": false - }, - "insecureSkipVerify": { - "type": "boolean", - "x-omitempty": false - }, - "key": { - "type": "string" - } - } - }, - "v1TotalClusterRate": { - "description": "Cluster total estimated rate information", - "type": "object", - "properties": { - "compute": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "storage": { - "type": "number", - "format": "float64", - "x-omitempty": false - }, - "total": { - "type": "number", - "format": "float64", - "x-omitempty": false - } - } - }, - "v1TotalResourceUsage": { - "description": "Total Resource Usage", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "project resource usage", - "properties": { - "alloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "project": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - } - }, - "totalAlloyCpuCoreHours": { - "type": "number", - "x-omitempty": false - }, - "totalPureCpuCoreHours": { - "type": "number", - "x-omitempty": false - } - } - }, - "v1TransferJob": { - "description": "transfer job details", - "type": "object", - "properties": { - "finishTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "folder": { - "type": "string" - }, - "isCompleted": { - "type": "boolean" - }, - "message": { - "type": "array", - "items": { - "type": "string" - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - }, - "status": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1Uid": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - }, - "v1UidRoleSummary": { - "type": "object", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - }, - "v1UidSummary": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1Uids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "required": [ - "uid" - ], - "properties": { - "uid": { - "type": "string" - } - } - } - }, - "v1UpdateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "v1UpdateTenantStatus": { - "description": "Update tenant status", - "type": "object", - "properties": { - "errorMessage": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "stage": { - "type": "string" - } - } - }, - "v1Updated": { - "description": "The resource was updated successfully" - }, - "v1UpdatedMsg": { - "description": "Update response with message", - "properties": { - "msg": { - "type": "string" - } - } - }, - "v1Upgrades": { - "description": "Upgrades represent the reason of the last upgrade that took place", - "type": "object", - "properties": { - "reason": { - "type": "array", - "items": { - "type": "string" - } - }, - "timestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1User": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1UserActivateInfo": { - "type": "object", - "properties": { - "passwordToken": { - "type": "string" - } - } - }, - "v1UserActivateLink": { - "type": "object", - "properties": { - "activationLink": { - "type": "string" - } - } - }, - "v1UserActivityInfo": { - "description": "Active user data", - "type": "object", - "properties": { - "lastLogin": { - "type": "string" - }, - "lastLoginTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1UserAssetSsh": { - "description": "SSH key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - }, - "v1UserAssetSshEntity": { - "description": "SSH Key request payload", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - }, - "v1UserAssetSshSpec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - }, - "v1UserAssetsLocation": { - "description": "Location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Location specification", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean" - }, - "storage": { - "description": "Location type", - "type": "string", - "default": "s3", - "enum": [ - "s3", - "gcp", - "minio" - ] - }, - "type": { - "type": "string" - } - } - } - } - }, - "v1UserAssetsLocationAzure": { - "description": "Azure location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "Azure location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "Azure storage config object", - "type": "object", - "required": [ - "resourceGroup", - "containerName", - "storageName", - "credentials" - ], - "properties": { - "containerName": { - "description": "Azure container name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "resourceGroup": { - "description": "Azure resource group name, to which the storage account is mapped", - "type": "string" - }, - "sku": { - "description": "Azure sku", - "type": "string" - }, - "storageName": { - "description": "Azure storage name", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "Azure location type [azure]", - "type": "string" - } - } - } - } - }, - "v1UserAssetsLocationAzureSpec": { - "description": "Azure location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "Azure storage config object", - "type": "object", - "required": [ - "resourceGroup", - "containerName", - "storageName", - "credentials" - ], - "properties": { - "containerName": { - "description": "Azure container name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "clientCloud": { - "description": "Contains configuration for Azure cloud", - "type": "string", - "default": "public", - "enum": [ - "azure-china", - "azure-government", - "public" - ] - }, - "clientId": { - "type": "string" - }, - "clientSecret": { - "type": "string" - }, - "subscriptionId": { - "type": "string" - }, - "tenantId": { - "type": "string" - } - } - }, - "resourceGroup": { - "description": "Azure resource group name, to which the storage account is mapped", - "type": "string" - }, - "sku": { - "description": "Azure sku", - "type": "string" - }, - "storageName": { - "description": "Azure storage name", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "Azure location type [azure]", - "type": "string" - } - } - }, - "v1UserAssetsLocationGcp": { - "description": "GCP location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "GCP location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "GCP storage config object", - "type": "object", - "required": [ - "bucketName", - "credentials" - ], - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "projectId": { - "description": "GCP project id", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "GCP location type [gcp]", - "type": "string" - } - } - } - } - }, - "v1UserAssetsLocationGcpSpec": { - "description": "GCP location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "GCP storage config object", - "type": "object", - "required": [ - "bucketName", - "credentials" - ], - "properties": { - "bucketName": { - "description": "GCP storage bucket name", - "type": "string" - }, - "credentials": { - "type": "object", - "properties": { - "jsonCredentials": { - "type": "string" - }, - "jsonCredentialsFileUid": { - "type": "string" - } - } - }, - "projectId": { - "description": "GCP project id", - "type": "string" - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "GCP location type [gcp]", - "type": "string" - } - } - }, - "v1UserAssetsLocationS3": { - "description": "S3 location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - } - } - }, - "v1UserAssetsLocationS3Spec": { - "description": "S3 location specification", - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "description": "S3 storage config object", - "type": "object", - "required": [ - "bucketName", - "region", - "credentials" - ], - "properties": { - "bucketName": { - "description": "S3 storage bucket name", - "type": "string" - }, - "caCert": { - "description": "CA Certificate", - "type": "string" - }, - "credentials": { - "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", - "type": "object", - "properties": { - "accessKey": { - "description": "AWS account access key", - "type": "string" - }, - "credentialType": { - "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", - "type": "string", - "default": "secret", - "enum": [ - "secret", - "sts" - ] - }, - "partition": { - "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", - "type": "string", - "default": "aws", - "enum": [ - "aws", - "aws-us-gov" - ] - }, - "policyARNs": { - "description": "List of policy ARNs required in case of credentialType sts.", - "type": "array", - "items": { - "type": "string" - } - }, - "secretKey": { - "description": "AWS account secret key", - "type": "string" - }, - "sts": { - "description": "Aws sts credentials", - "type": "object", - "properties": { - "arn": { - "description": "Arn for the aws sts credentials in cloud account", - "type": "string" - }, - "externalId": { - "description": "ExternalId for the aws sts credentials in cloud account", - "type": "string" - } - } - } - } - }, - "region": { - "description": "AWS region name", - "type": "string" - }, - "s3ForcePathStyle": { - "type": "boolean", - "default": true - }, - "s3Url": { - "description": "Custom hosted S3 URL", - "type": "string" - }, - "useRestic": { - "description": "Set to 'true', to use Restic plugin for the backup", - "type": "boolean", - "default": true - } - } - }, - "isDefault": { - "description": "Set to 'true', if location has to be set as default", - "type": "boolean" - }, - "type": { - "description": "S3 location type [s3/minio]", - "type": "string" - } - } - }, - "v1UserAssetsLocationSpec": { - "description": "Location specification", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean" - }, - "storage": { - "description": "Location type", - "type": "string", - "default": "s3", - "enum": [ - "s3", - "gcp", - "minio" - ] - }, - "type": { - "type": "string" - } - } - }, - "v1UserAssetsLocations": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of locations", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Location object", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Location specification", - "type": "object", - "properties": { - "isDefault": { - "type": "boolean" - }, - "storage": { - "description": "Location type", - "type": "string", - "default": "s3", - "enum": [ - "s3", - "gcp", - "minio" - ] - }, - "type": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1UserAssetsSsh": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of SSH keys", - "type": "array", - "uniqueItems": true, - "items": { - "description": "SSH key information", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "SSH key specification", - "type": "object", - "properties": { - "publicKey": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1UserAuthenticatedUrl": { - "description": "Returns the Authenticated redirect Url for the palette oidc", - "type": "object", - "properties": { - "redirectUrl": { - "description": "authenticated redirect Url for the palette oidc", - "type": "string" - } - } - }, - "v1UserEntity": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User Entity input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - }, - "v1UserInfoResponse": { - "type": "object", - "properties": { - "address": { - "description": "End-User's preferred postal address", - "type": "string" - }, - "birthdate": { - "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format", - "type": "string" - }, - "email": { - "description": "End-User's preferred e-mail address", - "type": "string" - }, - "email_verified": { - "description": "User at the time the verification was performed", - "type": "boolean" - }, - "family_name": { - "description": "Surname(s) or last name(s) of the End-User", - "type": "string" - }, - "gender": { - "description": "End-User's gender", - "type": "string" - }, - "given_name": { - "description": "Given name(s) or first name(s) of the End-User", - "type": "string" - }, - "locale": { - "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag", - "type": "string" - }, - "middle_name": { - "description": "Middle name(s) of the End-User", - "type": "string" - }, - "name": { - "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences", - "type": "string" - }, - "nickname": { - "description": "Casual name of the End-User that may or may not be the same as the given_name", - "type": "string" - }, - "phone_number": { - "description": "End-User's preferred telephone number", - "type": "string" - }, - "phone_number_verified": { - "description": "User at the time the verification was performed", - "type": "boolean" - }, - "picture": { - "description": "URL of the End-User's profile picture", - "type": "string" - }, - "preferred_username": { - "description": "Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe", - "type": "string" - }, - "profile": { - "description": "URL of the End-User's profile page", - "type": "string" - }, - "sub": { - "description": "Subject - Identifier for the End-User at the Issuer", - "type": "string" - }, - "updated_at": { - "description": "Time the End-User's information was last updated", - "type": "integer" - }, - "website": { - "description": "URL of the End-User's Web page or blog", - "type": "string" - }, - "zoneinfo": { - "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone", - "type": "string" - } - } - }, - "v1UserKubectlSession": { - "type": "object", - "properties": { - "clusterUid": { - "type": "string" - }, - "creationTime": { - "type": "string" - }, - "isActive": { - "type": "boolean" - }, - "podIp": { - "type": "string" - }, - "podName": { - "type": "string" - }, - "port": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "sessionUid": { - "type": "string" - }, - "shellyCluster": { - "type": "string" - }, - "tenantClusterEndpoint": { - "type": "string" - }, - "userName": { - "type": "string" - }, - "userUid": { - "type": "string" - } - } - }, - "v1UserMe": { - "description": "User information wrt permissions", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "User status with permissions", - "properties": { - "activationLink": { - "description": "Contains activation link for the user", - "type": "string" - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean" - }, - "isContractAccepted": { - "description": "Specifies if user account has accepted the contract", - "type": "boolean", - "x-omitempty": false - }, - "loginMode": { - "description": "User's login Mode", - "type": "string" - }, - "projectPermissions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "tenant": { - "type": "object", - "properties": { - "orgName": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "tenantPermissions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1UserMeStatus": { - "description": "User status with permissions", - "properties": { - "activationLink": { - "description": "Contains activation link for the user", - "type": "string" - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean" - }, - "isContractAccepted": { - "description": "Specifies if user account has accepted the contract", - "type": "boolean", - "x-omitempty": false - }, - "loginMode": { - "description": "User's login Mode", - "type": "string" - }, - "projectPermissions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "tenant": { - "type": "object", - "properties": { - "orgName": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "tenantPermissions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "v1UserMeTenant": { - "type": "object", - "properties": { - "orgName": { - "type": "string" - }, - "tenantUid": { - "type": "string" - } - } - }, - "v1UserMeta": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "org": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1UserMetaEntity": { - "description": "User meta entity", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1UserPatch": { - "type": "array", - "items": { - "type": "object", - "required": [ - "op", - "path" - ], - "properties": { - "from": { - "description": "A path to the pointer from which reference will be taken", - "type": "string" - }, - "op": { - "description": "The operation to be performed", - "type": "string", - "enum": [ - "add", - "remove", - "replace", - "move", - "copy" - ] - }, - "path": { - "description": "A path to the pointer on which operation will be done", - "type": "string" - }, - "value": { - "description": "The value to be used within the operations.", - "type": "object" - } - } - } - }, - "v1UserProfile": { - "description": "User Profile", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User Profile specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - } - } - }, - "status": { - "description": "User Profile status", - "properties": { - "lastPasswordPolicyMail": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastPasswordUpdate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1UserProfileSpec": { - "description": "User Profile specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - } - } - }, - "v1UserProfileStatus": { - "description": "User Profile status", - "properties": { - "lastPasswordPolicyMail": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastPasswordUpdate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1UserProfiles": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User Profile", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User Profile specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - } - } - }, - "status": { - "description": "User Profile status", - "properties": { - "lastPasswordPolicyMail": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastPasswordUpdate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1UserRoleMap": { - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "userId": { - "type": "string" - } - } - }, - "v1UserRoleUIDs": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1UserRolesEntity": { - "type": "object", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1UserRsaToken": { - "description": "Rsa Auth token response", - "type": "object", - "properties": { - "token": { - "type": "string" - } - } - }, - "v1UserSpec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1UserSpecEntity": { - "description": "User Entity input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "loginMode": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "teams": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1UserSpecSummary": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "projects": { - "description": "Deprecated.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectsCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1UserStatus": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1UserStatusLoginMode": { - "type": "object", - "properties": { - "loginMode": { - "type": "string", - "enum": [ - "dev", - "devops" - ] - } - } - }, - "v1UserSummary": { - "description": "User summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "projects": { - "description": "Deprecated.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectsCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1UserSummarySortFields": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "v1UserSummarySortSpec": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - }, - "v1UserToken": { - "description": "Returns the Authorization token. To be used for further api calls", - "type": "object", - "properties": { - "Authorization": { - "description": "Describes the authentication token in jwt format.", - "type": "string" - }, - "isMfa": { - "description": "Indicates the authentication flow using MFA", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1UserUpdateEntity": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User Entity input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - }, - "v1UserUpdateSpecEntity": { - "description": "User Entity input", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1Users": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "User specifications", - "properties": { - "emailId": { - "description": "User's email id", - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "roles": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1UsersFilterSpec": { - "description": "Users filter spec", - "properties": { - "emailId": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "v1UsersMetadata": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User meta entity", - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1UsersSummary": { - "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "projects": { - "description": "Deprecated.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectsCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1UsersSummaryList": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "User summary", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "properties": { - "emailId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "projects": { - "description": "Deprecated.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "projectsCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "teams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "User status", - "properties": { - "activationLink": { - "description": "provides the link to activate or reset the user password", - "type": "string", - "x-omitempty": false - }, - "isActive": { - "description": "Specifies if user account is active/disabled", - "type": "boolean", - "x-omitempty": false - }, - "isPasswordResetting": { - "description": "Specifies if user in multi org requested password reset", - "type": "boolean", - "x-omitempty": false - }, - "lastSignIn": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - }, - "v1UsersSummarySpec": { - "description": "Users filter summary spec", - "properties": { - "filter": { - "description": "Users filter spec", - "properties": { - "emailId": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - }, - "name": { - "type": "object", - "properties": { - "beginsWith": { - "type": "string", - "x-nullable": true - }, - "contains": { - "type": "string", - "x-nullable": true - }, - "eq": { - "type": "string", - "x-nullable": true - }, - "ignoreCase": { - "type": "boolean", - "default": true - }, - "ne": { - "type": "string", - "x-nullable": true - } - } - } - } - }, - "sort": { - "type": "array", - "uniqueItems": true, - "items": { - "properties": { - "field": { - "type": "string", - "enum": [ - "name", - "creationTimestamp" - ], - "x-nullable": true - }, - "order": { - "type": "string", - "default": "asc", - "enum": [ - "asc", - "desc" - ] - } - } - } - } - } - }, - "v1V1SystemAdminEmail": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "insecureVerify": { - "type": "boolean" - }, - "password": { - "type": "string" - } - } - }, - "v1V1SystemAdminPasswordResetEntity": { - "description": "SystemAdmin", - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "newPassword": { - "type": "string" - }, - "oldPassword": { - "type": "string" - } - } - }, - "v1VMAddVolumeEntity": { - "type": "object", - "required": [ - "addVolumeOptions" - ], - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "dataVolumeTemplate": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - }, - "persist": { - "description": "If 'true' add the disk to the Virtual Machine \u0026 Virtual Machine Instance, else add the disk to the Virtual Machine Instance only", - "type": "boolean" - } - } - }, - "v1VMCluster": { - "description": "VM Dashboard enabled Spectro cluster", - "type": "object", - "properties": { - "metadata": { - "properties": { - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Spectro cluster spec", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - } - } - }, - "status": { - "description": "Spectro cluster status", - "properties": { - "clusterState": { - "type": "string" - } - } - } - } - }, - "v1VMClusters": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "VM Dashboard enabled Spectro cluster", - "type": "object", - "properties": { - "metadata": { - "properties": { - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "spec": { - "description": "Spectro cluster spec", - "type": "object", - "properties": { - "cloudType": { - "type": "string" - } - } - }, - "status": { - "description": "Spectro cluster status", - "properties": { - "clusterState": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1VMRemoveVolumeEntity": { - "type": "object", - "required": [ - "removeVolumeOptions" - ], - "properties": { - "persist": { - "description": "If 'true' remove the disk from the Virtual Machine \u0026 Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only", - "type": "boolean" - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "v1Variable": { - "description": "Unique variable field with schema definition", - "type": "object", - "required": [ - "name" - ], - "properties": { - "defaultValue": { - "description": "The default value of the variable", - "type": "string" - }, - "description": { - "description": "Variable description", - "type": "string" - }, - "displayName": { - "description": "Unique display name of the variable", - "type": "string" - }, - "format": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "hidden": { - "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "immutable": { - "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "isSensitive": { - "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Variable name", - "type": "string" - }, - "regex": { - "description": "Regular expression pattern which the variable value must match", - "type": "string" - }, - "required": { - "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1VariableFormat": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "v1VariableNames": { - "required": [ - "variables" - ], - "properties": { - "variables": { - "description": "Array of variable names", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1Variables": { - "type": "object", - "properties": { - "variables": { - "description": "List of unique variable fields with schema constraints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Unique variable field with schema definition", - "type": "object", - "required": [ - "name" - ], - "properties": { - "defaultValue": { - "description": "The default value of the variable", - "type": "string" - }, - "description": { - "description": "Variable description", - "type": "string" - }, - "displayName": { - "description": "Unique display name of the variable", - "type": "string" - }, - "format": { - "description": "Format type of the variable value", - "type": "string", - "default": "string", - "enum": [ - "string", - "number", - "boolean", - "ipv4", - "ipv4cidr", - "ipv6", - "version" - ] - }, - "hidden": { - "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "immutable": { - "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "isSensitive": { - "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", - "type": "boolean", - "x-omitempty": false - }, - "name": { - "description": "Variable name", - "type": "string" - }, - "regex": { - "description": "Regular expression pattern which the variable value must match", - "type": "string" - }, - "required": { - "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "v1Virtual": { - "properties": { - "appDeployments": { - "description": "list of apps deployed on the virtual cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "clusterGroup": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "hostCluster": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "lifecycleStatus": { - "properties": { - "msg": { - "description": "error or success msg of lifecycle", - "type": "string" - }, - "status": { - "description": "lifecycle status", - "type": "string", - "enum": [ - "Pausing", - "Paused", - "Resuming", - "Running", - "Error" - ] - } - } - }, - "state": { - "description": "cluster virtual host status", - "type": "string" - }, - "virtualClusters": { - "description": "list of virtual clusters deployed on the cluster", - "type": "array", - "items": { - "description": "Object resource reference", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "projectUid": { - "type": "string" - }, - "tenantUid": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1VirtualCloudClusterConfigEntity": { - "description": "Virtual cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - } - } - }, - "v1VirtualCloudConfig": { - "description": "VirtualCloudConfig is the Schema for the virtual cloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.", - "type": "object", - "required": [ - "clusterConfig", - "hostClusterUid", - "machinePoolConfig" - ], - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - }, - "hostClusterUid": { - "type": "string" - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "status": { - "description": "Defines the status of virtual cloud config", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "type", - "x-kubernetes-patch-strategy": "merge" - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - } - } - } - } - }, - "v1VirtualCloudConfigSpec": { - "description": "VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.", - "type": "object", - "required": [ - "clusterConfig", - "hostClusterUid", - "machinePoolConfig" - ], - "properties": { - "clusterConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - }, - "hostClusterUid": { - "type": "string" - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - } - } - } - }, - "v1VirtualClusterConfig": { - "description": "Cluster level configuration for virtual cluster", - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "The hostname on which the API server is serving.", - "type": "string" - }, - "port": { - "description": "The port on which the API server is serving.", - "type": "integer", - "format": "int32" - } - } - }, - "helmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "kubernetesVersion": { - "type": "string", - "default": "" - } - } - }, - "v1VirtualClusterHelmChart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "v1VirtualClusterHelmRelease": { - "type": "object", - "properties": { - "chart": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "" - }, - "repo": { - "type": "string", - "default": "" - }, - "version": { - "type": "string", - "default": "" - } - } - }, - "values": { - "type": "string", - "default": "" - } - } - }, - "v1VirtualClusterResize": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1VirtualInstanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "v1VirtualMachine": { - "description": "Virtual cloud machine definition", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Virtual cloud machine definition spec", - "type": "object", - "properties": { - "hostname": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1VirtualMachinePoolCloudConfigEntity": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - } - } - }, - "v1VirtualMachinePoolConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "azs": { - "type": "array", - "items": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean" - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "resourcePool": { - "type": "string" - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean" - } - } - }, - "v1VirtualMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "type": "object", - "required": [ - "instanceType" - ], - "properties": { - "instanceType": { - "type": "object", - "properties": { - "maxCPU": { - "description": "Maximum CPU cores", - "type": "integer", - "format": "int32" - }, - "maxMemInMiB": { - "description": "Maximum memory in MiB", - "type": "integer", - "format": "int32" - }, - "maxStorageGiB": { - "description": "Maximum storage in GiB", - "type": "integer", - "format": "int32" - }, - "minCPU": { - "description": "Minimum CPU cores", - "type": "integer", - "format": "int32" - }, - "minMemInMiB": { - "description": "Minimum memory in MiB", - "type": "integer", - "format": "int32" - }, - "minStorageGiB": { - "description": "Minimum storage in GiB", - "type": "integer", - "format": "int32" - } - } - } - } - } - } - }, - "v1VirtualMachineSnapshot": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - }, - "v1VirtualMachineSnapshotList": { - "description": "VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources", - "type": "object", - "required": [ - "metadata", - "items" - ], - "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" - }, - "items": { - "type": "array", - "items": { - "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", - "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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "status": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - } - } - } - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests 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": { - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "type": "object", - "properties": { - "continue": { - "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", - "type": "string" - }, - "remainingItemCount": { - "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", - "type": "integer", - "format": "int64" - }, - "resourceVersion": { - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", - "type": "string" - }, - "selfLink": { - "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - } - } - } - } - }, - "v1VirtualMachineSnapshotSpec": { - "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "deletionPolicy": { - "type": "string" - }, - "failureDeadline": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "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" - } - } - } - } - }, - "v1VirtualMachineSnapshotStatus": { - "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "creationTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "error": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "indications": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "phase": { - "type": "string" - }, - "readyToUse": { - "type": "boolean" - }, - "snapshotVolumes": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - }, - "x-nullable": true - }, - "v1VirtualMachineSpec": { - "description": "Virtual cloud machine definition spec", - "type": "object", - "properties": { - "hostname": { - "type": "string" - } - } - }, - "v1VirtualMachines": { - "description": "List of virtual machines", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Virtual cloud machine definition", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Virtual cloud machine definition spec", - "type": "object", - "properties": { - "hostname": { - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1VirtualNetwork": { - "description": "Azure virtual network is the fundamental building block for your private network in Azure.", - "type": "object", - "properties": { - "addressSpaces": { - "description": "Location of the virtual network", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "id": { - "description": "The ID of the resource group", - "type": "string" - }, - "location": { - "description": "Location of the virtual network", - "type": "string" - }, - "name": { - "description": "Name of the virtual network", - "type": "string" - }, - "subnets": { - "description": "List of subnets associated with Azure VPC", - "type": "array", - "items": { - "type": "object", - "properties": { - "cidrBlock": { - "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", - "type": "string" - }, - "name": { - "type": "string" - }, - "securityGroupName": { - "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", - "type": "string" - } - } - } - }, - "type": { - "description": "Type of the virtual network", - "type": "string" - } - } - }, - "v1VmAccessCredential": { - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1VmAccessCredentialSecretSource": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - }, - "v1VmAddVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "v1VmAffinity": { - "description": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "v1VmBIOS": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "v1VmBlockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "v1VmBootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "v1VmCDRomTarget": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "v1VmChassis": { - "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" - } - } - }, - "v1VmClientPassthroughDevices": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "v1VmClock": { - "description": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "v1VmClockOffsetUTC": { - "description": "UTC sets the guest clock to UTC on each boot.", - "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", - "format": "int32" - } - } - }, - "v1VmCloudInitConfigDriveSource": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "v1VmCloudInitNoCloudSource": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "v1VmCondition": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1VmConfigDriveSshPublicKeyAccessCredentialPropagation": { - "type": "object" - }, - "v1VmConfigMapVolumeSource": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "v1VmContainerDiskSource": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "v1VmCoreDataVolumeSource": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "v1VmCoreResourceRequirements": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "v1VmCpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "v1VmCpuFeature": { - "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" - } - } - }, - "v1VmCustomBlockSize": { - "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", - "type": "object", - "required": [ - "logical", - "physical" - ], - "properties": { - "logical": { - "type": "integer", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "v1VmDHCPOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "v1VmDHCPPrivateOptions": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - }, - "v1VmDataVolumeBlankImage": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "v1VmDataVolumeCheckpoint": { - "description": "DataVolumeCheckpoint defines a stage in a warm migration.", - "type": "object", - "required": [ - "previous", - "current" - ], - "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" - } - } - }, - "v1VmDataVolumeSource": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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" - } - } - } - } - }, - "v1VmDataVolumeSourceHttp": { - "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" - } - } - }, - "v1VmDataVolumeSourceImageIO": { - "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source", - "type": "object", - "required": [ - "url", - "diskId" - ], - "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" - } - } - }, - "v1VmDataVolumeSourcePVC": { - "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC", - "type": "object", - "required": [ - "namespace", - "name" - ], - "properties": { - "name": { - "description": "The name of the source PVC", - "type": "string" - }, - "namespace": { - "description": "The namespace of the source PVC", - "type": "string" - } - } - }, - "v1VmDataVolumeSourceRef": { - "description": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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" - } - } - }, - "v1VmDataVolumeSourceRegistry": { - "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" - } - } - }, - "v1VmDataVolumeSourceS3": { - "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" - } - } - }, - "v1VmDataVolumeSourceUpload": { - "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", - "type": "object" - }, - "v1VmDataVolumeSourceVDDK": { - "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" - } - } - }, - "v1VmDataVolumeSpec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - }, - "v1VmDataVolumeTemplateSpec": { - "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.", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "DataVolumeSpec defines the DataVolume type 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": [ - "previous", - "current" - ], - "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" - }, - "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": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "source": { - "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", - "type": "object", - "properties": { - "blank": { - "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", - "type": "object" - }, - "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": [ - "url", - "diskId" - ], - "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": [ - "namespace", - "name" - ], - "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" - } - } - }, - "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": "DataVolumeSourceRef defines an indirect reference to the source of data for the 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": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - }, - "v1VmDevices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "v1VmDisk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "v1VmDiskTarget": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "v1VmDomainSpec": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "v1VmDownwardApiVolumeFile": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - }, - "v1VmDownwardApiVolumeSource": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "v1VmDownwardMetricsVolumeSource": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "v1VmDuration": { - "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", - "type": "string" - }, - "v1VmEFI": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - }, - "v1VmEmptyDiskSource": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "v1VmEphemeralVolumeSource": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "v1VmError": { - "description": "Error is the last error encountered during the snapshot/restore", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1VmExecAction": { - "description": "ExecAction describes a \"run in container\" action.", - "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" - } - } - } - }, - "v1VmFeatureApiC": { - "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" - } - } - }, - "v1VmFeatureHyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "v1VmFeatureKVm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "v1VmFeatureSpinlocks": { - "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": "int64" - } - } - }, - "v1VmFeatureState": { - "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" - } - } - }, - "v1VmFeatureVendorId": { - "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" - } - } - }, - "v1VmFeatures": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "v1VmFieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "v1VmFilesystem": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "v1VmFilesystemVirtiofs": { - "type": "object" - }, - "v1VmFirmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "v1VmGPU": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "v1VmGuestAgentPing": { - "description": "GuestAgentPing configures the guest-agent based ping probe", - "type": "object" - }, - "v1VmHPETTimer": { - "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" - } - } - }, - "v1VmHostDevice": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - } - } - }, - "v1VmHostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "v1VmHotplugVolumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "v1VmHttpGetAction": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "scheme": { - "description": "Scheme to use for connecting to the host. Defaults to HTTP.", - "type": "string" - } - } - }, - "v1VmHttpHeader": { - "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" - } - } - }, - "v1VmHugepages": { - "description": "Hugepages allow to use 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" - } - } - }, - "v1VmHypervTimer": { - "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" - } - } - }, - "v1VmI6300ESBWatchdog": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "v1VmInput": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - }, - "v1VmInstancetypeMatcher": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI 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" - } - } - }, - "v1VmInterface": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - }, - "v1VmInterfaceBridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "v1VmInterfaceMacvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "v1VmInterfaceMasquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "v1VmInterfacePasst": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "v1VmInterfaceSRIOV": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "v1VmInterfaceSlirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "v1VmKVmTimer": { - "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" - } - } - }, - "v1VmKernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "v1VmKernelBootContainer": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "v1VmLabelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "v1VmLabelSelectorRequirement": { - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "v1VmLaunchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "v1VmListMeta": { - "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", - "type": "object", - "properties": { - "continue": { - "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", - "type": "string" - }, - "remainingItemCount": { - "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", - "type": "integer", - "format": "int64" - }, - "resourceVersion": { - "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", - "type": "string" - }, - "selfLink": { - "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - } - } - }, - "v1VmLocalObjectReference": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "v1VmLunTarget": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "v1VmMachine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "v1VmManagedFieldsEntry": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1VmMemory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "v1VmMemoryDumpVolumeSource": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "v1VmMultusNetwork": { - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "v1VmNUMA": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "v1VmNUMAGuestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - }, - "v1VmNetwork": { - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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" - } - } - } - } - }, - "v1VmNodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "v1VmNodeSelector": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - }, - "v1VmNodeSelectorRequirement": { - "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" - } - } - } - }, - "v1VmNodeSelectorTerm": { - "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" - } - } - } - } - } - } - }, - "v1VmObjectFieldSelector": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "v1VmObjectMeta": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "v1VmOwnerReference": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "v1VmPITTimer": { - "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" - } - } - }, - "v1VmPersistentVolumeClaimSpec": { - "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", - "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": "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" - } - } - }, - "dataSourceRef": { - "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "v1VmPersistentVolumeClaimVolumeSource": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "v1VmPodAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "v1VmPodAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "v1VmPodDnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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" - } - } - } - }, - "v1VmPodDnsConfigOption": { - "description": "PodDNSConfigOption defines DNS resolver options of a pod.", - "type": "object", - "properties": { - "name": { - "description": "Required.", - "type": "string" - }, - "value": { - "type": "string" - } - } - }, - "v1VmPodNetwork": { - "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" - } - } - }, - "v1VmPort": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - }, - "v1VmPreferenceMatcher": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI 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" - } - } - }, - "v1VmPreferredSchedulingTerm": { - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - }, - "v1VmProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation": { - "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" - } - } - }, - "v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation": { - "type": "object" - }, - "v1VmQuantity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "v1VmRTCTimer": { - "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" - } - } - }, - "v1VmRealtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "v1VmRemoveVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - }, - "v1VmResourceFieldSelector": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - }, - "v1VmResourceRequirements": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - }, - "v1VmRng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "v1VmSEV": { - "type": "object" - }, - "v1VmSecretVolumeSource": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "v1VmServiceAccountVolumeSource": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "v1VmSnapshotVolumesLists": { - "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", - "type": "object", - "properties": { - "excludedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - }, - "includedVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - }, - "v1VmSoundDevice": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "v1VmSshPublicKeyAccessCredential": { - "description": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "v1VmSshPublicKeyAccessCredentialPropagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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" - } - } - } - } - }, - "v1VmSshPublicKeyAccessCredentialSource": { - "description": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - }, - "v1VmStorageSpec": { - "description": "StorageSpec defines the Storage type 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": "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" - } - } - }, - "resources": { - "description": "ResourceRequirements describes the compute resource requirements.", - "type": "object", - "properties": { - "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": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "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/", - "type": "object", - "additionalProperties": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - } - }, - "selector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "v1VmSyNICTimer": { - "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" - } - } - }, - "v1VmSysprepSource": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - }, - "v1VmTPMDevice": { - "type": "object" - }, - "v1VmTcpSocketAction": { - "description": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "v1VmTimer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "v1VmToleration": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - }, - "v1VmTopologySpreadConstraint": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "v1VmTypedLocalObjectReference": { - "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" - } - } - }, - "v1VmUserPasswordAccessCredential": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "v1VmUserPasswordAccessCredentialPropagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "v1VmUserPasswordAccessCredentialSource": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - }, - "v1VmVGPUDisplayOptions": { - "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": "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" - } - } - } - } - }, - "v1VmVGPUOptions": { - "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": "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" - } - } - } - } - } - } - }, - "v1VmVirtualMachineCondition": { - "description": "VirtualMachineCondition represents the state of VirtualMachine", - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "type": "string" - }, - "lastTransitionTime": { - "type": "string" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "v1VmVirtualMachineInstanceSpec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "v1VmVirtualMachineInstanceTemplateSpec": { - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "clusterName": { - "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", - "type": "string" - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string" - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": "integer", - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "type": "string", - "format": "date-time", - "x-nullable": true - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", - "type": "string" - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": "integer", - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": "array", - "items": { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": "string" - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": "string" - }, - "fieldsV1": { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": "object", - "properties": { - "Raw": { - "type": "array", - "items": { - "type": "string", - "format": "byte" - } - } - } - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": "string" - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": "string" - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": "string" - }, - "time": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": "object", - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": "boolean" - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": "boolean" - }, - "kind": { - "description": "Kind of the referent.", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", - "type": "string" - }, - "selfLink": { - "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", - "type": "string" - } - } - }, - "spec": { - "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", - "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": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "configDrive": { - "type": "object" - }, - "qemuGuestAgent": { - "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": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "secret": { - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } - } - } - }, - "userPassword": { - "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", - "type": "object", - "required": [ - "source", - "propagationMethod" - ], - "properties": { - "propagationMethod": { - "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "type": "object" - } - } - }, - "source": { - "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", - "type": "object", - "properties": { - "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": "Affinity is a group of affinity scheduling rules.", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Node affinity is a group of node affinity scheduling rules.", - "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": [ - "weight", - "preference" - ], - "properties": { - "preference": { - "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" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", - "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" - } - } - } - } - } - } - } - } - } - } - } - }, - "podAffinity": { - "description": "Pod affinity is a group of inter pod affinity scheduling rules.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - }, - "podAntiAffinity": { - "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", - "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.", - "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": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - } - } - } - } - }, - "dnsConfig": { - "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from 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": { - "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": "Represents the clock and timers of a vmi.", - "type": "object", - "properties": { - "timer": { - "description": "Represents all available timers in a vmi.", - "type": "object", - "properties": { - "hpet": { - "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": { - "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": { - "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": { - "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": { - "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" - } - } - } - } - }, - "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.", - "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", - "format": "int32" - } - } - } - } - }, - "cpu": { - "description": "CPU allows specifying the CPU topology.", - "type": "object", - "properties": { - "cores": { - "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "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" - }, - "features": { - "description": "Features specifies the CPU features list inside the VMI.", - "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" - } - } - } - }, - "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": { - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime holds the tuning knobs specific for realtime 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" - } - } - }, - "sockets": { - "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - }, - "threads": { - "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", - "type": "integer", - "format": "int64" - } - } - }, - "devices": { - "type": "object", - "properties": { - "autoattachGraphicsDevice": { - "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", - "type": "boolean" - }, - "autoattachInputDevice": { - "description": "Whether to attach an Input Device. Defaults to false.", - "type": "boolean" - }, - "autoattachMemBalloon": { - "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", - "type": "boolean" - }, - "autoattachPodInterface": { - "description": "Whether to attach a pod network interface. Defaults to true.", - "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.", - "type": "boolean" - }, - "autoattachVSOCK": { - "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", - "type": "boolean" - }, - "blockMultiQueue": { - "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", - "type": "boolean" - }, - "clientPassthrough": { - "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", - "type": "object" - }, - "disableHotplug": { - "description": "DisableHotplug disabled the ability to hotplug disks.", - "type": "boolean" - }, - "disks": { - "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - } - }, - "filesystems": { - "description": "Filesystems describes filesystem which is connected to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "virtiofs" - ], - "properties": { - "name": { - "description": "Name is the device name", - "type": "string" - }, - "virtiofs": { - "type": "object" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "gpus": { - "description": "Whether to attach a GPU device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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": "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" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Whether to attach a host device to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "deviceName" - ], - "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" - }, - "inputs": { - "description": "Inputs describe input devices", - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "bus": { - "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", - "type": "string" - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "type": { - "description": "Type indicated the type of input device. Supported values: tablet.", - "type": "string" - } - } - } - }, - "interfaces": { - "description": "Interfaces describe network interfaces which are added to the vmi.", - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "acpiIndex": { - "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", - "format": "int32" - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 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", - "format": "int32" - }, - "bridge": { - "description": "InterfaceBridge connects to a given network via a linux bridge.", - "type": "object" - }, - "dhcpOptions": { - "description": "Extra DHCP options to use in the interface.", - "type": "object", - "properties": { - "bootFileName": { - "description": "If specified will pass option 67 to interface's DHCP server", - "type": "string" - }, - "ntpServers": { - "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", - "type": "array", - "items": { - "type": "string" - } - }, - "privateOptions": { - "description": "If specified will pass extra DHCP options for private use, range: 224-254", - "type": "array", - "items": { - "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", - "type": "object", - "required": [ - "option", - "value" - ], - "properties": { - "option": { - "description": "Option is an Integer value from 224-254 Required.", - "type": "integer", - "format": "int32" - }, - "value": { - "description": "Value is a String value for the Option provided Required.", - "type": "string" - } - } - } - }, - "tftpServerName": { - "description": "If specified will pass option 66 to interface's DHCP server", - "type": "string" - } - } - }, - "macAddress": { - "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", - "type": "string" - }, - "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", - "type": "object" - }, - "masquerade": { - "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", - "type": "object" - }, - "model": { - "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", - "type": "string" - }, - "name": { - "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", - "type": "string" - }, - "passt": { - "description": "InterfacePasst connects to a given network.", - "type": "object" - }, - "pciAddress": { - "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "ports": { - "description": "List of ports to be forwarded to the virtual machine.", - "type": "array", - "items": { - "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", - "type": "object", - "required": [ - "port" - ], - "properties": { - "name": { - "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", - "type": "string" - }, - "port": { - "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.", - "type": "integer", - "format": "int32" - }, - "protocol": { - "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", - "type": "string" - } - } - } - }, - "slirp": { - "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", - "type": "object" - }, - "sriov": { - "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", - "type": "object" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - } - }, - "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" - }, - "rng": { - "description": "Rng represents the random device passed from host", - "type": "object" - }, - "sound": { - "description": "Represents the user's configuration to emulate sound cards in the VMI.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "model": { - "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", - "type": "string" - }, - "name": { - "description": "User's defined name for this sound device", - "type": "string" - } - } - }, - "tpm": { - "type": "object" - }, - "useVirtioTransitional": { - "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", - "type": "boolean" - }, - "watchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - } - } - }, - "features": { - "type": "object", - "properties": { - "acpi": { - "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" - } - } - }, - "apic": { - "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" - } - } - }, - "hyperv": { - "description": "Hyperv specific features.", - "type": "object", - "properties": { - "evmcs": { - "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" - } - } - }, - "frequencies": { - "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" - } - } - }, - "ipi": { - "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" - } - } - }, - "reenlightenment": { - "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" - } - } - }, - "relaxed": { - "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" - } - } - }, - "reset": { - "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" - } - } - }, - "runtime": { - "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" - } - } - }, - "spinlocks": { - "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": "int64" - } - } - }, - "synic": { - "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" - } - } - }, - "synictimer": { - "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": "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" - } - } - }, - "vapic": { - "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" - } - } - }, - "vendorid": { - "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": "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" - } - } - } - } - }, - "kvm": { - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "pvspinlock": { - "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" - } - } - }, - "smm": { - "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" - } - } - } - } - }, - "firmware": { - "type": "object", - "properties": { - "bootloader": { - "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", - "type": "object", - "properties": { - "bios": { - "description": "If set (default), BIOS will be used.", - "type": "object", - "properties": { - "useSerial": { - "description": "If set, the BIOS output will be transmitted over serial", - "type": "boolean" - } - } - }, - "efi": { - "description": "If set, EFI will be used instead of BIOS.", - "type": "object", - "properties": { - "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" - } - } - } - } - }, - "kernelBoot": { - "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", - "type": "object", - "properties": { - "container": { - "description": "If set, the VM will be booted from the defined kernel / initrd.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image that contains initrd / kernel files.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "initrdPath": { - "description": "the fully-qualified path to the ramdisk image in the host OS", - "type": "string" - }, - "kernelPath": { - "description": "The fully-qualified path to the kernel image in the host OS", - "type": "string" - } - } - }, - "kernelArgs": { - "description": "Arguments to be passed to the kernel at boot time", - "type": "string" - } - } - }, - "serial": { - "description": "The system-serial-number in SMBIOS", - "type": "string" - }, - "uuid": { - "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", - "type": "string" - } - } - }, - "ioThreadsPolicy": { - "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", - "type": "string" - }, - "launchSecurity": { - "type": "object", - "properties": { - "sev": { - "type": "object" - } - } - }, - "machine": { - "type": "object", - "properties": { - "type": { - "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", - "type": "string" - } - } - }, - "memory": { - "description": "Memory allows specifying the VirtualMachineInstance memory features.", - "type": "object", - "properties": { - "guest": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "hugepages": { - "description": "Hugepages allow to use 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" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - }, - "overcommitGuestOverhead": { - "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", - "type": "boolean" - }, - "requests": { - "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", - "type": "object" - } - } - } - } - }, - "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", - "type": "string" - }, - "hostname": { - "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", - "type": "string" - }, - "livenessProbe": { - "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. 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": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", - "type": "object", - "properties": { - "exec": { - "description": "ExecAction describes a \"run in container\" action.", - "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 configures the guest-agent based ping probe", - "type": "object" - }, - "httpGet": { - "description": "HTTPGetAction describes an action based on HTTP Get requests.", - "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.", - "type": [ - "string", - "number" - ] - }, - "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": "TCPSocketAction describes an action based on opening a socket", - "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.", - "type": [ - "string", - "number" - ] - } - } - }, - "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" - } - } - }, - "schedulerName": { - "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", - "type": "string" - }, - "startStrategy": { - "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", - "type": "string" - }, - "subdomain": { - "description": "If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", - "type": "string" - }, - "terminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "tolerations": { - "description": "If toleration is specified, obey all the toleration rules.", - "type": "array", - "items": { - "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", - "type": "object", - "properties": { - "effect": { - "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", - "type": "string" - }, - "key": { - "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", - "type": "string" - }, - "operator": { - "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", - "type": "string" - }, - "tolerationSeconds": { - "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", - "type": "integer", - "format": "int64" - }, - "value": { - "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", - "type": "string" - } - } - } - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", - "type": "array", - "items": { - "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", - "type": "object", - "required": [ - "maxSkew", - "topologyKey", - "whenUnsatisfiable" - ], - "properties": { - "labelSelector": { - "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - } - }, - "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", - "type": "integer", - "format": "int32" - }, - "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", - "type": "string" - }, - "whenUnsatisfiable": { - "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "topologyKey", - "whenUnsatisfiable" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "topologyKey", - "x-kubernetes-patch-strategy": "merge" - }, - "volumes": { - "description": "List of volumes that can be mounted by disks belonging to the vmi.", - "type": "array", - "items": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "v1VmVirtualMachineMemoryDumpRequest": { - "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", - "type": "object", - "required": [ - "claimName", - "phase" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of the pvc that will contain the memory dump", - "type": "string" - }, - "endTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "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": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1VmVirtualMachineStartFailure": { - "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", - "type": "object", - "properties": { - "consecutiveFailCount": { - "type": "integer", - "format": "int32" - }, - "lastFailedVMIUID": { - "type": "string" - }, - "retryAfterTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1VmVirtualMachineStateChangeRequest": { - "type": "object", - "required": [ - "action" - ], - "properties": { - "action": { - "description": "Indicates the type of action that is requested. e.g. Start or Stop", - "type": "string" - }, - "data": { - "description": "Provides additional data in order to perform the Action", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "uid": { - "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", - "type": "string" - } - } - }, - "v1VmVirtualMachineVolumeRequest": { - "type": "object", - "properties": { - "addVolumeOptions": { - "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", - "type": "object", - "required": [ - "name", - "disk", - "volumeSource" - ], - "properties": { - "disk": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "blockSize": { - "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", - "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", - "format": "int32" - }, - "physical": { - "type": "integer", - "format": "int32" - } - } - }, - "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" - } - } - } - } - }, - "bootOrder": { - "description": "BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", - "type": "integer", - "format": "int32" - }, - "cache": { - "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", - "type": "string" - }, - "cdrom": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to true.", - "type": "boolean" - }, - "tray": { - "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", - "type": "string" - } - } - }, - "dedicatedIOThread": { - "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", - "type": "boolean" - }, - "disk": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", - "type": "string" - }, - "pciAddress": { - "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "io": { - "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", - "type": "string" - }, - "lun": { - "type": "object", - "properties": { - "bus": { - "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", - "type": "string" - }, - "readonly": { - "description": "ReadOnly. Defaults to false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Name is the device name", - "type": "string" - }, - "serial": { - "description": "Serial provides the ability to specify a serial number for the disk device.", - "type": "string" - }, - "shareable": { - "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", - "type": "boolean" - }, - "tag": { - "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", - "type": "string" - } - } - }, - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", - "type": "string" - }, - "volumeSource": { - "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", - "type": "object", - "properties": { - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - } - } - }, - "removeVolumeOptions": { - "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", - "type": "object", - "required": [ - "name" - ], - "properties": { - "dryRun": { - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "name": { - "description": "Name represents the name that maps to both the disk and volume that should be removed", - "type": "string" - } - } - } - } - }, - "v1VmVolume": { - "description": "Volume represents a named volume in a vmi.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "cloudInitConfigDrive": { - "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains config drive inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains config drive inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "cloudInitNoCloud": { - "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", - "type": "object", - "properties": { - "networkData": { - "description": "NetworkData contains NoCloud inline cloud-init networkdata.", - "type": "string" - }, - "networkDataBase64": { - "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", - "type": "string" - }, - "networkDataSecretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secretRef": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "userData": { - "description": "UserData contains NoCloud inline cloud-init userdata.", - "type": "string" - }, - "userDataBase64": { - "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", - "type": "string" - } - } - }, - "configMap": { - "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "optional": { - "description": "Specify whether the ConfigMap or it's keys must be defined", - "type": "boolean" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "containerDisk": { - "description": "Represents a docker image with an embedded disk.", - "type": "object", - "required": [ - "image" - ], - "properties": { - "image": { - "description": "Image is the name of the image with the embedded disk.", - "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" - }, - "imagePullSecret": { - "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", - "type": "string" - }, - "path": { - "description": "Path defines the path to disk file in the container", - "type": "string" - } - } - }, - "dataVolume": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "name": { - "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", - "type": "string" - } - } - }, - "downwardAPI": { - "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", - "type": "object", - "properties": { - "fields": { - "description": "Fields is a list of downward API volume file", - "type": "array", - "items": { - "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", - "type": "object", - "required": [ - "path" - ], - "properties": { - "fieldRef": { - "description": "ObjectFieldSelector selects an APIVersioned field of an object.", - "type": "object", - "required": [ - "fieldPath" - ], - "properties": { - "apiVersion": { - "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", - "type": "string" - }, - "fieldPath": { - "description": "Path of the field to select in the specified API version.", - "type": "string" - } - } - }, - "mode": { - "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", - "type": "integer", - "format": "int32" - }, - "path": { - "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", - "type": "string" - }, - "resourceFieldRef": { - "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", - "type": "object", - "required": [ - "resource" - ], - "properties": { - "containerName": { - "description": "Container name: required for volumes, optional for env vars", - "type": "string" - }, - "divisor": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "resource": { - "description": "Required: resource to select", - "type": "string" - } - } - } - } - } - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "downwardMetrics": { - "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", - "type": "object" - }, - "emptyDisk": { - "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", - "type": "object", - "required": [ - "capacity" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - } - } - }, - "ephemeral": { - "type": "object", - "properties": { - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - } - } - }, - "hostDisk": { - "description": "Represents a disk created on the cluster level", - "type": "object", - "required": [ - "path", - "type" - ], - "properties": { - "capacity": { - "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", - "type": "string" - }, - "path": { - "description": "The path to HostDisk image located on the cluster", - "type": "string" - }, - "shared": { - "description": "Shared indicate whether the path is shared between nodes", - "type": "boolean" - }, - "type": { - "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", - "type": "string" - } - } - }, - "memoryDump": { - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "name": { - "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "persistentVolumeClaim": { - "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "object", - "required": [ - "claimName" - ], - "properties": { - "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", - "type": "string" - }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" - }, - "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "secret": { - "description": "SecretVolumeSource adapts a Secret into a volume.", - "type": "object", - "properties": { - "optional": { - "description": "Specify whether the Secret or it's keys must be defined", - "type": "boolean" - }, - "secretName": { - "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", - "type": "string" - }, - "volumeLabel": { - "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", - "type": "string" - } - } - }, - "serviceAccount": { - "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", - "type": "object", - "properties": { - "serviceAccountName": { - "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", - "type": "string" - } - } - }, - "sysprep": { - "description": "Represents a Sysprep volume source.", - "type": "object", - "properties": { - "configMap": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - }, - "secret": { - "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - } - } - } - } - } - } - }, - "v1VmVolumeSnapshotStatus": { - "type": "object", - "required": [ - "name", - "enabled" - ], - "properties": { - "enabled": { - "description": "True if the volume supports snapshotting", - "type": "boolean" - }, - "name": { - "description": "Volume name", - "type": "string" - }, - "reason": { - "description": "Empty if snapshotting is enabled, contains reason otherwise", - "type": "string" - } - } - }, - "v1VmWatchdog": { - "description": "Named watchdog device.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "i6300esb": { - "description": "i6300esb watchdog device.", - "type": "object", - "properties": { - "action": { - "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", - "type": "string" - } - } - }, - "name": { - "description": "Name of the watchdog.", - "type": "string" - } - } - }, - "v1VmWeightedPodAffinityTerm": { - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "type": "object", - "required": [ - "weight", - "podAffinityTerm" - ], - "properties": { - "podAffinityTerm": { - "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 \u003ctopologyKey\u003e 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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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 selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", - "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", - "x-kubernetes-patch-merge-key": "key", - "x-kubernetes-patch-strategy": "merge" - }, - "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" - } - } - }, - "v1VsphereAccount": { - "description": "VSphere account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "vcenterServer", - "username", - "password" - ], - "properties": { - "insecure": { - "description": "Insecure is a flag that controls whether or not to validate the vSphere server's certificate.", - "type": "boolean", - "x-omitempty": false - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - }, - "v1VsphereAccounts": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "VSphere account information", - "type": "object", - "properties": { - "apiVersion": { - "description": "Cloud account api version", - "type": "string" - }, - "kind": { - "description": "Cloud account kind", - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "type": "object", - "required": [ - "vcenterServer", - "username", - "password" - ], - "properties": { - "insecure": { - "description": "Insecure is a flag that controls whether or not to validate the vSphere server's certificate.", - "type": "boolean", - "x-omitempty": false - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "status": { - "description": "Status of the account", - "type": "object", - "properties": { - "state": { - "description": "Cloud account status", - "type": "string" - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1VsphereCloudAccount": { - "type": "object", - "required": [ - "vcenterServer", - "username", - "password" - ], - "properties": { - "insecure": { - "description": "Insecure is a flag that controls whether or not to validate the vSphere server's certificate.", - "type": "boolean", - "x-omitempty": false - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "v1VsphereCloudClusterConfigEntity": { - "description": "vSphere cloud cluster config entity", - "type": "object", - "properties": { - "clusterConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - } - } - }, - "v1VsphereCloudConfig": { - "description": "VsphereCloudConfig is the Schema for the vspherecloudconfigs 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": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig", - "type": "object", - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "edgeHostRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane", - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "status": { - "description": "VsphereCloudConfigStatus defines the observed state of VsphereCloudConfig", - "type": "object", - "properties": { - "ansibleDigest": { - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "lastOVACreated": { - "type": "string" - }, - "lastVMExported": { - "type": "string" - }, - "nodeImage": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", - "type": "object", - "properties": { - "fullPath": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "uploadOvaS3": { - "description": "UploadOVAS3 will hold last image name which uploaded to S3", - "type": "string" - }, - "useCapiImage": { - "description": "If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - } - } - }, - "v1VsphereCloudConfigSpec": { - "description": "VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig", - "type": "object", - "required": [ - "clusterConfig", - "machinePoolConfig" - ], - "properties": { - "cloudAccountRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "clusterConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "edgeHostRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "machinePoolConfig": { - "type": "array", - "items": { - "type": "object", - "required": [ - "isControlPlane", - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - } - }, - "v1VsphereCloudConfigStatus": { - "description": "VsphereCloudConfigStatus defines the observed state of VsphereCloudConfig", - "type": "object", - "properties": { - "ansibleDigest": { - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "status" - ], - "properties": { - "lastProbeTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "description": "Human-readable message indicating details about last transition.", - "type": "string" - }, - "reason": { - "description": "Unique, one-word, CamelCase reason for the condition's last transition.", - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "isAddonLayer": { - "description": "addon layers present in spc", - "type": "boolean" - }, - "lastOVACreated": { - "type": "string" - }, - "lastVMExported": { - "type": "string" - }, - "nodeImage": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", - "type": "object", - "properties": { - "fullPath": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "roleDigest": { - "description": "this map will be for ansible roles present in eack pack", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "sourceImageId": { - "description": "sourceImageId, it can be from packref's annotations or from pack.json", - "type": "string" - }, - "uploadOvaS3": { - "description": "UploadOVAS3 will hold last image name which uploaded to S3", - "type": "string" - }, - "useCapiImage": { - "description": "If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", - "type": "boolean" - } - } - }, - "v1VsphereCloudDatacenter": { - "description": "Vsphere datacenter", - "type": "object", - "properties": { - "computeClusters": { - "type": "array", - "items": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - }, - "folders": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - } - } - }, - "v1VsphereClusterConfig": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "v1VsphereClusterConfigEntity": { - "type": "object", - "required": [ - "placement" - ], - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "v1VsphereComputeCluster": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1VsphereComputeClusterResources": { - "description": "Datacenter and its resources like datastore, resoucepool, folders", - "type": "object", - "properties": { - "computecluster": { - "description": "Vsphere compute cluster", - "type": "object", - "properties": { - "datastores": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "networks": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "resourcePools": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "datacenter": { - "description": "Name of the datacenter", - "type": "string" - } - } - }, - "v1VsphereDatacenter": { - "description": "List of Datacenter with computeclusters", - "type": "object", - "properties": { - "computeclusters": { - "description": "List of the VSphere compute clusters in datacenter", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "datacenter": { - "description": "name of the datacenter of the VSphere", - "type": "string" - }, - "folders": { - "description": "List of the VSphere folders in datacenter", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1VsphereDatacenters": { - "description": "List of Datacenters with computeclusters", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of associated datacenters", - "type": "array", - "uniqueItems": true, - "items": { - "description": "List of Datacenter with computeclusters", - "type": "object", - "properties": { - "computeclusters": { - "description": "List of the VSphere compute clusters in datacenter", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "datacenter": { - "description": "name of the datacenter of the VSphere", - "type": "string" - }, - "folders": { - "description": "List of the VSphere folders in datacenter", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - } - }, - "v1VsphereDnsMapping": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - }, - "v1VsphereDnsMappingSpec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - }, - "v1VsphereDnsMappings": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "description": "List of vSphere DNS mapping", - "type": "array", - "uniqueItems": true, - "items": { - "description": "VSphere DNS Mapping", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "VSphere DNS Mapping Spec", - "type": "object", - "required": [ - "privateGatewayUid", - "datacenter", - "network", - "dnsName" - ], - "properties": { - "datacenter": { - "description": "VSphere datacenter name", - "type": "string" - }, - "dnsName": { - "description": "VSphere DNS name", - "type": "string" - }, - "network": { - "description": "VSphere network name", - "type": "string" - }, - "networkUrl": { - "description": "VSphere network URL", - "type": "string", - "readOnly": true - }, - "privateGatewayUid": { - "description": "VSphere private gateway uid", - "type": "string" - } - } - } - } - } - } - } - }, - "v1VsphereEnv": { - "description": "Vsphere environment entity", - "type": "object", - "properties": { - "version": { - "description": "Version of vsphere environment", - "type": "string" - } - } - }, - "v1VsphereImage": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", - "type": "object", - "properties": { - "fullPath": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1VsphereInstanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "v1VsphereMachine": { - "description": "vSphere cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "vSphere cloud VM definition spec", - "type": "object", - "required": [ - "vcenterServer", - "nics", - "placement" - ], - "properties": { - "images": { - "type": "array", - "items": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", - "type": "object", - "properties": { - "fullPath": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "vSphere network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - }, - "v1VsphereMachinePoolCloudConfigEntity": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "v1VsphereMachinePoolConfig": { - "type": "object", - "required": [ - "isControlPlane", - "instanceType" - ], - "properties": { - "additionalLabels": { - "description": "additionalLabels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "isControlPlane": { - "description": "whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "labels for this pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - }, - "size": { - "description": "size of the pool, number of machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - }, - "v1VsphereMachinePoolConfigEntity": { - "type": "object", - "required": [ - "cloudConfig" - ], - "properties": { - "cloudConfig": { - "properties": { - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - } - } - }, - "poolConfig": { - "description": "Machine pool configuration for the cluster", - "type": "object", - "required": [ - "name", - "size", - "labels" - ], - "properties": { - "additionalLabels": { - "description": "Additional labels to be part of the machine pool", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "additionalTags": { - "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "isControlPlane": { - "description": "Whether this pool is for control plane", - "type": "boolean", - "x-omitempty": false - }, - "labels": { - "description": "Labels for this machine pool, example: control-plane/worker, gpu, windows", - "type": "array", - "items": { - "type": "string" - } - }, - "machinePoolProperties": { - "description": "Machine pool specific properties", - "type": "object", - "properties": { - "archType": { - "type": "string", - "default": "amd64", - "enum": [ - "amd64", - "arm64" - ] - } - } - }, - "maxSize": { - "description": "Max size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "minSize": { - "description": "Min size of the pool, for scaling", - "type": "integer", - "format": "int32" - }, - "name": { - "type": "string" - }, - "nodeRepaveInterval": { - "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", - "type": "integer", - "format": "int32" - }, - "size": { - "description": "Size of the pool, number of nodes/machines", - "type": "integer", - "format": "int32" - }, - "taints": { - "description": "control plane or worker taints", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Taint", - "type": "object", - "properties": { - "effect": { - "type": "string", - "enum": [ - "NoSchedule", - "PreferNoSchedule", - "NoExecute" - ] - }, - "key": { - "description": "The taint key to be applied to a node", - "type": "string" - }, - "timeAdded": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "value": { - "description": "The taint value corresponding to the taint key.", - "type": "string" - } - } - } - }, - "updateStrategy": { - "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1", - "type": "object", - "properties": { - "type": { - "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", - "type": "string", - "enum": [ - "RollingUpdateScaleOut", - "RollingUpdateScaleIn" - ] - } - } - }, - "useControlPlaneAsWorker": { - "description": "If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove control plane taint this will not be used for worker pools", - "type": "boolean", - "x-omitempty": false - } - } - } - } - }, - "v1VsphereMachineSpec": { - "description": "vSphere cloud VM definition spec", - "type": "object", - "required": [ - "vcenterServer", - "nics", - "placement" - ], - "properties": { - "images": { - "type": "array", - "items": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", - "type": "object", - "properties": { - "fullPath": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "vSphere network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "v1VsphereMachines": { - "description": "vSphere machine list", - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "vSphere cloud VM definition", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "vSphere cloud VM definition spec", - "type": "object", - "required": [ - "vcenterServer", - "nics", - "placement" - ], - "properties": { - "images": { - "type": "array", - "items": { - "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", - "type": "object", - "properties": { - "fullPath": { - "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", - "type": "string" - }, - "state": { - "type": "string" - } - } - } - }, - "instanceType": { - "type": "object", - "required": [ - "numCPUs", - "memoryMiB", - "diskGiB" - ], - "properties": { - "diskGiB": { - "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - }, - "memoryMiB": { - "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int64" - }, - "numCPUs": { - "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", - "type": "integer", - "format": "int32" - } - } - }, - "nics": { - "type": "array", - "items": { - "description": "vSphere network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placement": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "vcenterServer": { - "description": "VcenterServer is the address of the vSphere endpoint", - "type": "string" - } - } - }, - "status": { - "description": "cloud machine status", - "type": "object", - "properties": { - "health": { - "description": "Machine health state", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Machine health condition", - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "lastHeartBeatTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "instanceState": { - "type": "string", - "enum": [ - "Pending", - "Provisioning", - "Provisioned", - "Running", - "Deleting", - "Deleted", - "Failed", - "Unknown" - ] - }, - "maintenanceStatus": { - "description": "Machine maintenance status", - "type": "object", - "properties": { - "action": { - "type": "string" - }, - "message": { - "type": "string" - }, - "state": { - "type": "string" - } - } - } - } - } - } - } - }, - "listmeta": { - "description": "ListMeta describes metadata for the resource listing", - "type": "object", - "properties": { - "continue": { - "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", - "type": "string", - "x-omitempty": false - }, - "count": { - "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", - "type": "integer", - "x-omitempty": false - }, - "limit": { - "description": "Number of records feteched", - "type": "integer", - "x-omitempty": false - }, - "offset": { - "description": "The next offset for the pagination. Starting index for which next request will be placed.", - "type": "integer", - "x-omitempty": false - } - } - } - } - }, - "v1VsphereNetworkConfig": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "v1VsphereNetworkConfigEntity": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "v1VsphereNic": { - "description": "vSphere network interface", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "index": { - "type": "integer", - "format": "int8" - }, - "macAddress": { - "type": "string" - }, - "networkName": { - "type": "string" - }, - "privateIPs": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "v1VsphereOverlordClusterConfigEntity": { - "type": "object", - "properties": { - "controlPlaneEndpoint": { - "type": "object", - "properties": { - "ddnsSearchDomain": { - "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", - "type": "string" - }, - "host": { - "description": "IP or FQDN(External/DDNS)", - "type": "string" - }, - "type": { - "description": "VIP or External", - "type": "string", - "enum": [ - "VIP", - "External", - "DDNS" - ] - } - } - }, - "ntpServers": { - "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", - "type": "array", - "items": { - "type": "string" - } - }, - "placements": { - "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", - "type": "array", - "items": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - } - }, - "sshKeys": { - "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", - "type": "array", - "items": { - "type": "string" - } - }, - "staticIp": { - "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", - "type": "boolean" - } - } - }, - "v1VspherePlacementConfig": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "ipPool": { - "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", - "type": "object", - "properties": { - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pools": { - "description": "Pools contains the list of IP addresses pools", - "type": "array", - "items": { - "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", - "type": "object", - "properties": { - "end": { - "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", - "type": "string" - }, - "gateway": { - "description": "Gateway is the gateway ip address", - "type": "string" - }, - "nameserver": { - "description": "Nameserver define search domains and nameserver addresses", - "type": "object", - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string" - } - }, - "search": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "start": { - "description": "Start is the first ip address that can be rendered", - "type": "string" - }, - "subnet": { - "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", - "type": "string" - } - } - } - }, - "prefix": { - "description": "Prefix is the mask of the network as integer (max 128)", - "type": "integer", - "format": "int32" - }, - "uid": { - "description": "UID is the UID of this IPPool, used by Hubble", - "type": "string" - } - } - }, - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolRef": { - "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", - "type": "object", - "properties": { - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", - "type": "string" - } - } - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "v1VspherePlacementConfigEntity": { - "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", - "type": "object", - "properties": { - "cluster": { - "description": "Cluster is the computecluster in vsphere", - "type": "string" - }, - "datacenter": { - "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", - "type": "string" - }, - "datastore": { - "description": "Datastore is the datastore in which VMs are created/located.", - "type": "string" - }, - "folder": { - "description": "Folder is the folder in which VMs are created/located.", - "type": "string" - }, - "imageTemplateFolder": { - "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", - "type": "string" - }, - "network": { - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "networkName": { - "description": "NetworkName is the name of the network in which VMs are created/located.", - "type": "string" - }, - "parentPoolUid": { - "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", - "type": "string" - }, - "staticIp": { - "description": "support dhcp or static IP, if false, use DHCP", - "type": "boolean" - } - } - }, - "resourcePool": { - "description": "ResourcePool is the resource pool within the above computecluster Cluster", - "type": "string" - }, - "storagePolicyName": { - "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", - "type": "string" - }, - "uid": { - "description": "UID for this placement", - "type": "string" - } - } - }, - "v1Workspace": { - "description": "Workspace information", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace specifications", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "policies": { - "description": "Workspace policies", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - }, - "status": { - "description": "Workspace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace error", - "properties": { - "clusterUid": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1WorkspaceBackup": { - "description": "Workspace backup", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace backup spec", - "properties": { - "config": { - "description": "Workspace backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - }, - "workspaceUid": { - "type": "string" - } - } - }, - "status": { - "description": "Workspace backup status", - "properties": { - "workspaceBackupStatuses": { - "type": "array", - "items": { - "description": "Workspace backup status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceBackupConfig": { - "description": "Workspace cluster backup config", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Workspace backup state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "clusterBackupRefs": { - "type": "array", - "items": { - "description": "Workspace cluster backup response", - "properties": { - "backupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "config": { - "description": "Workspace backup status config", - "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "requestTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - } - }, - "v1WorkspaceBackupClusterRef": { - "description": "Workspace backup cluster ref", - "properties": { - "backupName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - }, - "v1WorkspaceBackupConfig": { - "description": "Workspace backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - }, - "v1WorkspaceBackupConfigEntity": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - }, - "v1WorkspaceBackupDeleteEntity": { - "description": "Cluster backup delete config", - "properties": { - "clusterConfigs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace backup cluster ref", - "properties": { - "backupName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "requestUid": { - "type": "string" - } - } - }, - "v1WorkspaceBackupSpec": { - "description": "Workspace backup spec", - "properties": { - "config": { - "description": "Workspace backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - }, - "workspaceUid": { - "type": "string" - } - } - }, - "v1WorkspaceBackupState": { - "description": "Workspace backup state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1WorkspaceBackupStatus": { - "description": "Workspace backup status", - "properties": { - "workspaceBackupStatuses": { - "type": "array", - "items": { - "description": "Workspace backup status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceBackupConfig": { - "description": "Workspace cluster backup config", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Workspace backup state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "clusterBackupRefs": { - "type": "array", - "items": { - "description": "Workspace cluster backup response", - "properties": { - "backupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "config": { - "description": "Workspace backup status config", - "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "requestTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - }, - "v1WorkspaceBackupStatusConfig": { - "description": "Workspace backup status config", - "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1WorkspaceBackupStatusMeta": { - "description": "Workspace backup status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceBackupConfig": { - "description": "Workspace cluster backup config", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Workspace backup state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "clusterBackupRefs": { - "type": "array", - "items": { - "description": "Workspace cluster backup response", - "properties": { - "backupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "config": { - "description": "Workspace backup status config", - "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "requestTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1WorkspaceClusterBackupConfig": { - "description": "Workspace cluster backup config", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Workspace backup state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "clusterBackupRefs": { - "type": "array", - "items": { - "description": "Workspace cluster backup response", - "properties": { - "backupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "config": { - "description": "Workspace backup status config", - "properties": { - "backupName": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "requestTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1WorkspaceClusterBackupResponse": { - "description": "Workspace cluster backup response", - "properties": { - "backupStatusMeta": { - "description": "Backup status meta", - "properties": { - "backupName": { - "type": "string" - }, - "backupState": { - "description": "Backup state", - "properties": { - "backupTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deleteState": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "backupedNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "expiryDate": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "backupUid": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - }, - "v1WorkspaceClusterNamespace": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - }, - "v1WorkspaceClusterNamespacesEntity": { - "description": "Workspace cluster namespaces update entity", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - }, - "v1WorkspaceClusterRef": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - }, - "v1WorkspaceClusterRestoreConfig": { - "description": "Workspace cluster restore config", - "properties": { - "backupName": { - "type": "string" - }, - "clusterRestoreRefs": { - "type": "array", - "items": { - "description": "Workspace cluster restore response", - "properties": { - "backupName": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "restoreUid": { - "type": "string" - } - } - } - }, - "restoreState": { - "description": "Workspace restore state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "v1WorkspaceClusterRestoreResponse": { - "description": "Workspace cluster restore response", - "properties": { - "backupName": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "restoreUid": { - "type": "string" - } - } - }, - "v1WorkspaceClusterRestoreState": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "v1WorkspaceClusterWorkloadCronJobs": { - "description": "Workspace cluster workload cronjobs summary", - "type": "object", - "properties": { - "cronjobs": { - "type": "array", - "items": { - "description": "Cluster workload cronjob summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1WorkspaceClusterWorkloadDaemonSets": { - "description": "Workspace cluster workload daemonsets summary", - "type": "object", - "properties": { - "daemonSets": { - "type": "array", - "items": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1WorkspaceClusterWorkloadDeployments": { - "description": "Workspace cluster workload deployments summary", - "type": "object", - "properties": { - "deployments": { - "type": "array", - "items": { - "description": "Cluster workload deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1WorkspaceClusterWorkloadJobs": { - "description": "Workspace cluster workload jobs summary", - "type": "object", - "properties": { - "jobs": { - "type": "array", - "items": { - "description": "Cluster workload job summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1WorkspaceClusterWorkloadNamespaces": { - "description": "Workspace cluster workload namespaces summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "namespaces": { - "type": "array", - "items": { - "description": "Cluster workload namespace summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload namespace status", - "type": "object", - "properties": { - "phase": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1WorkspaceClusterWorkloadPods": { - "description": "Workspace cluster workload pods summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pods": { - "type": "array", - "items": { - "description": "Cluster workload pod summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - } - } - } - } - } - }, - "v1WorkspaceClusterWorkloadRoleBindings": { - "description": "Workspace cluster workload rbac bindings summary", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "v1WorkspaceClusterWorkloadStatefulSets": { - "description": "Workspace cluster workload statefulsets summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "statefulSets": { - "type": "array", - "items": { - "description": "Cluster workload statefulset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - }, - "v1WorkspaceClustersWorkloadCronJobs": { - "description": "Workspace clusters workload cronjobs summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload cronjobs summary", - "type": "object", - "properties": { - "cronjobs": { - "type": "array", - "items": { - "description": "Cluster workload cronjob summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload cronjob spec", - "type": "object", - "properties": { - "schedule": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload cronjob status", - "type": "object", - "properties": { - "lastScheduleTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadDaemonSets": { - "description": "Workspace clusters workload statefulsets summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload daemonsets summary", - "type": "object", - "properties": { - "daemonSets": { - "type": "array", - "items": { - "description": "Cluster workload daemonset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload daemonset status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32" - }, - "currentScheduled": { - "type": "integer", - "format": "int32" - }, - "desiredScheduled": { - "type": "integer", - "format": "int32" - }, - "misScheduled": { - "type": "integer", - "format": "int32" - }, - "ready": { - "type": "integer", - "format": "int32" - }, - "updatedScheduled": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadDeployments": { - "description": "Workspace clusters workload deployments summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload deployments summary", - "type": "object", - "properties": { - "deployments": { - "type": "array", - "items": { - "description": "Cluster workload deployment summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload deployment status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadJobs": { - "description": "Workspace clusters workload jobs summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload jobs summary", - "type": "object", - "properties": { - "jobs": { - "type": "array", - "items": { - "description": "Cluster workload job summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload job status", - "type": "object", - "properties": { - "completionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "items": { - "description": "Cluster workload condition", - "type": "object", - "properties": { - "lastTransitionTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "lastUpdateTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "startTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "succeeded": { - "type": "integer", - "format": "int32" - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadNamespaces": { - "description": "Workspace clusters workload namespaces summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload namespaces summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "namespaces": { - "type": "array", - "items": { - "description": "Cluster workload namespace summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload namespace status", - "type": "object", - "properties": { - "phase": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadPods": { - "description": "Workspace clusters workload pods summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload pods summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "pods": { - "type": "array", - "items": { - "description": "Cluster workload pod summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload pod metadata", - "type": "object", - "properties": { - "associatedRefs": { - "type": "array", - "items": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "machineUid": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "nodename": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster workload pod spec", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resources": { - "description": "Cluster workload pod container resources", - "type": "object", - "properties": { - "limits": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - }, - "requests": { - "description": "Cluster workload pod container resource", - "type": "object", - "properties": { - "cpu": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "cpuUnit": { - "type": "string" - }, - "memory": { - "type": "integer", - "format": "int64", - "x-omitempty": false - }, - "memoryUnit": { - "type": "string" - } - } - } - } - } - } - } - }, - "volumes": { - "type": "array", - "items": { - "description": "Cluster workload pod volume", - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "status": { - "description": "Cluster workload pod status", - "type": "object", - "properties": { - "containers": { - "type": "array", - "items": { - "description": "Cluster workload pod container status", - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ready": { - "type": "boolean", - "x-omitempty": false - }, - "restartCount": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "started": { - "type": "boolean", - "x-omitempty": false - }, - "state": { - "description": "Cluster workload pod container state", - "type": "object", - "properties": { - "exitCode": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "finishedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "reason": { - "type": "string" - }, - "startedAt": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - } - } - } - }, - "phase": { - "type": "string" - }, - "podIp": { - "type": "string" - }, - "qosClass": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadRoleBindings": { - "description": "Workspace clusters workload rbac bindings summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload rbac bindings summary", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "items": { - "description": "Cluster workload rbac binding summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - } - } - }, - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceClustersWorkloadStatefulSets": { - "description": "Workspace clusters workload statefulsets summary", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "items": { - "description": "Workspace cluster workload statefulsets summary", - "type": "object", - "properties": { - "metadata": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "statefulSets": { - "type": "array", - "items": { - "description": "Cluster workload statefulset summary", - "type": "object", - "properties": { - "metadata": { - "description": "Cluster workload metadata", - "type": "object", - "properties": { - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "entity": { - "description": "Cluster workload ref", - "type": "object", - "properties": { - "kind": { - "type": "string" - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "namespace": { - "type": "string" - } - } - }, - "status": { - "description": "Cluster workload statefulset status", - "type": "object", - "properties": { - "replicas": { - "description": "Cluster workload replica status", - "type": "object", - "properties": { - "available": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "ready": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "total": { - "type": "integer", - "format": "int32", - "x-omitempty": false - }, - "updated": { - "type": "integer", - "format": "int32", - "x-omitempty": false - } - } - } - } - } - } - } - } - } - } - }, - "metadata": { - "description": "ObjectMeta input entity for object creation", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - } - } - }, - "v1WorkspaceEntity": { - "description": "Workspace information", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace specifications", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "policies": { - "description": "Workspace policies", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - } - }, - "v1WorkspaceError": { - "description": "Workspace error", - "properties": { - "clusterUid": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - }, - "v1WorkspaceNamespaceImage": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1WorkspaceNamespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - }, - "v1WorkspacePolicies": { - "description": "Workspace policies", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - } - }, - "v1WorkspaceQuota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - }, - "v1WorkspaceResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - }, - "v1WorkspaceResourceAllocationsEntity": { - "description": "Workspace resource allocation update entity", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - }, - "v1WorkspaceRestore": { - "description": "Workspace restore", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Workspace restore spec", - "properties": { - "workspaceUid": { - "type": "string" - } - } - }, - "status": { - "description": "Workspace restore status", - "properties": { - "workspaceRestoreStatuses": { - "type": "array", - "items": { - "description": "Workspace restore status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceRestoreConfig": { - "description": "Workspace cluster restore config", - "properties": { - "backupName": { - "type": "string" - }, - "clusterRestoreRefs": { - "type": "array", - "items": { - "description": "Workspace cluster restore response", - "properties": { - "backupName": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "restoreUid": { - "type": "string" - } - } - } - }, - "restoreState": { - "description": "Workspace restore state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - } - } - }, - "v1WorkspaceRestoreConfig": { - "description": "Workspace cluster restore config", - "required": [ - "backupName", - "sourceClusterUid" - ], - "properties": { - "backupName": { - "type": "string" - }, - "includeClusterResources": { - "type": "boolean" - }, - "includeNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "preserveNodePorts": { - "type": "boolean" - }, - "restorePVs": { - "type": "boolean" - }, - "sourceClusterUid": { - "type": "string" - } - } - }, - "v1WorkspaceRestoreConfigEntity": { - "description": "Cluster restore config", - "required": [ - "backupRequestUid" - ], - "properties": { - "backupRequestUid": { - "type": "string" - }, - "restoreConfigs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster restore config", - "required": [ - "backupName", - "sourceClusterUid" - ], - "properties": { - "backupName": { - "type": "string" - }, - "includeClusterResources": { - "type": "boolean" - }, - "includeNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "preserveNodePorts": { - "type": "boolean" - }, - "restorePVs": { - "type": "boolean" - }, - "sourceClusterUid": { - "type": "string" - } - } - } - } - } - }, - "v1WorkspaceRestoreSpec": { - "description": "Workspace restore spec", - "properties": { - "workspaceUid": { - "type": "string" - } - } - }, - "v1WorkspaceRestoreState": { - "description": "Workspace restore state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "v1WorkspaceRestoreStatus": { - "description": "Workspace restore status", - "properties": { - "workspaceRestoreStatuses": { - "type": "array", - "items": { - "description": "Workspace restore status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceRestoreConfig": { - "description": "Workspace cluster restore config", - "properties": { - "backupName": { - "type": "string" - }, - "clusterRestoreRefs": { - "type": "array", - "items": { - "description": "Workspace cluster restore response", - "properties": { - "backupName": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "restoreUid": { - "type": "string" - } - } - } - }, - "restoreState": { - "description": "Workspace restore state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - } - } - } - }, - "v1WorkspaceRestoreStatusMeta": { - "description": "Workspace restore status meta", - "properties": { - "actor": { - "description": "Compliance Scan actor", - "properties": { - "actorType": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "requestUid": { - "type": "string" - }, - "workspaceRestoreConfig": { - "description": "Workspace cluster restore config", - "properties": { - "backupName": { - "type": "string" - }, - "clusterRestoreRefs": { - "type": "array", - "items": { - "description": "Workspace cluster restore response", - "properties": { - "backupName": { - "type": "string" - }, - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - }, - "restoreStatusMeta": { - "description": "Workspace cluster restore state", - "properties": { - "msg": { - "type": "string" - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "state": { - "type": "string" - } - } - }, - "restoreUid": { - "type": "string" - } - } - } - }, - "restoreState": { - "description": "Workspace restore state", - "properties": { - "deleteState": { - "type": "string" - }, - "state": { - "type": "string" - } - } - }, - "restoreTime": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - } - } - }, - "v1WorkspaceRolesPatch": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - }, - "v1WorkspaceRolesUidSummary": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - }, - "v1WorkspaceScopeRoles": { - "description": "List all workspaces with the roles assigned to the users", - "properties": { - "projects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "List projects and its workspaces", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "workspaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace users and their roles", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "v1WorkspaceSpec": { - "description": "Workspace specifications", - "properties": { - "clusterNamespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster namespace", - "properties": { - "image": { - "description": "Workspace namespace image information", - "properties": { - "blackListedImages": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "isRegex": { - "type": "boolean", - "x-omitempty": false - }, - "name": { - "type": "string" - }, - "namespaceResourceAllocation": { - "description": "Workspace namespace resource allocation", - "properties": { - "clusterResourceAllocations": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace resource allocation", - "properties": { - "clusterUid": { - "type": "string" - }, - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - }, - "defaultResourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - } - }, - "clusterRbacs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC role binding defintion", - "type": "object", - "properties": { - "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "creationTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "deletionTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "lastModifiedTimestamp": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", - "type": "string" - } - } - }, - "spec": { - "description": "Cluster RBAC spec", - "type": "object", - "properties": { - "bindings": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster RBAC binding", - "type": "object", - "properties": { - "namespace": { - "type": "string" - }, - "role": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "Role", - "ClusterRole" - ] - }, - "name": { - "type": "string" - } - } - }, - "subjects": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster role ref", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "User", - "Group", - "ServiceAccount" - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "RoleBinding", - "ClusterRoleBinding" - ] - } - } - } - }, - "relatedObject": { - "description": "Object for which the resource is related", - "type": "object", - "properties": { - "kind": { - "type": "string", - "enum": [ - "spectrocluster", - "machine", - "cloudconfig", - "clusterprofile", - "pack", - "appprofile", - "appdeployment", - "edgehost" - ] - }, - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - } - }, - "status": { - "description": "Cluster rbac status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Cluster resource error", - "properties": { - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "clusterRefs": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace cluster reference", - "properties": { - "clusterName": { - "type": "string" - }, - "clusterUid": { - "type": "string" - } - } - } - }, - "policies": { - "description": "Workspace policies", - "properties": { - "backupPolicy": { - "description": "Cluster backup config", - "properties": { - "backupConfig": { - "description": "Cluster backup config", - "properties": { - "backupLocationName": { - "type": "string" - }, - "backupLocationUid": { - "type": "string" - }, - "backupName": { - "type": "string" - }, - "backupPrefix": { - "type": "string" - }, - "durationInHours": { - "type": "number", - "format": "int64" - }, - "includeAllDisks": { - "type": "boolean" - }, - "includeClusterResources": { - "type": "boolean" - }, - "locationType": { - "type": "string" - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "schedule": { - "description": "Cluster feature schedule", - "properties": { - "scheduledRunTime": { - "type": "string" - } - } - } - } - }, - "clusterUids": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "includeAllClusters": { - "type": "boolean" - } - } - } - } - }, - "quota": { - "description": "Workspace resource quota", - "properties": { - "resourceAllocation": { - "description": "Workspace resource allocation", - "properties": { - "cpuCores": { - "type": "number", - "minimum": -1, - "x-omitempty": false - }, - "memoryMiB": { - "type": "number", - "minimum": -1, - "x-omitempty": false - } - } - } - } - } - } - }, - "v1WorkspaceStatus": { - "description": "Workspace status", - "properties": { - "errors": { - "type": "array", - "uniqueItems": true, - "items": { - "description": "Workspace error", - "properties": { - "clusterUid": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "name": { - "type": "string" - }, - "resourceType": { - "type": "string" - } - } - } - } - } - }, - "v1WorkspaceWorkloadsFilter": { - "description": "Workspace workloads filter", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - }, - "v1WorkspaceWorkloadsSpec": { - "description": "Workspace workloads spec", - "type": "object", - "properties": { - "filter": { - "description": "Workspace workloads filter", - "type": "object", - "properties": { - "clusters": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - }, - "namespaces": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string" - } - } - } - } - } - }, - "v1WorkspacesRoles": { - "description": "Workspace users and their roles", - "properties": { - "inheritedRoles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "uid": { - "type": "string" - } - } - } - }, - "uid": { - "type": "string" - } - } - }, - "v1WorkspacesRolesPatch": { - "type": "object", - "properties": { - "workspaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "uid": { - "type": "string" - } - } - } - } - } - }, - "v1YearlyUsage": { - "description": "Yearly usage object", - "properties": { - "billingPeriod": { - "description": "Invoice billing period object", - "properties": { - "end": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "start": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - } - } - }, - "monthlyUsages": { - "description": "List of monthly usages", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Monthly usage object", - "properties": { - "month": { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": "string", - "format": "date-time" - }, - "tenantUsages": { - "description": "List of tenants usage", - "type": "array", - "uniqueItems": true, - "items": { - "description": "Tenant usage object", - "properties": { - "orgName": { - "description": "Organization name", - "type": "string" - }, - "tenantUid": { - "description": "Tenant uid", - "type": "string" - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - } - }, - "usedAlloyCredits": { - "description": "Credits used by imported clusters", - "type": "number", - "format": "float64" - }, - "usedPureCredits": { - "description": "Credits used by managed clusters", - "type": "number", - "format": "float64" - } - } - } - }, - "productUsages": { - "description": "Product usage", - "properties": { - "alloyUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - }, - "pureUsage": { - "description": "Yearly usage", - "properties": { - "allocatedCredits": { - "description": "Allocated credits", - "type": "number", - "format": "int64" - }, - "breachedCredits": { - "description": "Credits exceeded the allocated and free credits", - "type": "number", - "format": "float64" - }, - "freeSlaCredits": { - "description": "Free allocated SLA credits", - "type": "number", - "format": "int64" - }, - "usedCredits": { - "description": "Used credits", - "type": "number", - "format": "float64" - } - } - } - } - } - } - }, - "v1ZoneEntity": { - "description": "Azure availability zone entity", - "type": "object", - "properties": { - "id": { - "description": "Azure availability zone id", - "type": "string" - } - } - } - }, - "securityDefinitions": { - "ApiKey": { - "description": "API key authorization where API key can be generated from Palette console under Profile \u003e My API Keys", - "type": "apiKey", - "name": "ApiKey", - "in": "header" - }, - "Authorization": { - "description": "JWT token authorization obtained using /v1/auth/authenticate api", - "type": "apiKey", - "name": "Authorization", - "in": "header" - } - } -} \ No newline at end of file + \ No newline at end of file diff --git a/docs/api-content/api-docs/v1/api.json b/docs/api-content/api-docs/v1/api.json index 211ec245cc..0a0647fa93 100644 --- a/docs/api-content/api-docs/v1/api.json +++ b/docs/api-content/api-docs/v1/api.json @@ -26904,6 +26904,9 @@ "$ref": "#/definitions/v1CustomClusterConfigEntity", "description": "General cluster configuration like patching settings, namespace resource allocation, rbac" }, + "clusterType": { + "$ref": "#/definitions/v1ClusterType" + }, "machinepoolconfig": { "items": { "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" @@ -28704,6 +28707,28 @@ }, "type": "object" }, + "v1SystemCertificatesSpec": { + "description": "system certificate in base64 format", + "properties": { + "caCertificateBase64": { + "type": "string", + "x-omitempty": false + }, + "certificateBase64": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "x-omitempty": false + }, + "keyBase64": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, "v1SystemConfigAuth": { "description": "System config auth", "properties": { @@ -28726,6 +28751,18 @@ } } }, + "v1SystemConfigDomainCertificatesSpec": { + "description": "system domain and its certificate config spec", + "properties": { + "certificates": { + "$ref": "#/definitions/v1SystemCertificatesSpec" + }, + "rootDomain": { + "type": "string" + } + }, + "type": "object" + }, "v1SystemConfigDomainSpec": { "description": "system domain config spec", "properties": { @@ -32005,6 +32042,21 @@ }, "type": "object" }, + "v1UserInfo": { + "description": "User basic information", + "properties": { + "orgName": { + "description": "Organization name", + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "userUid": { + "type": "string" + } + } + }, "v1UserInfoResponse": { "properties": { "address": { @@ -68066,7 +68118,7 @@ ], "summary": "Cluster configuration for the edge installer", "tags": [ - "v1" + "spectroclusters" ] } }, @@ -69585,6 +69637,47 @@ "tags": [ "spectroclusters" ] + }, + "post": { + "operationId": "v1SpectroClustersUpgradeSettings", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterUpgradeSettingsEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update all clusters upgrade settings", + "tags": [ + "spectroclusters" + ] } }, "/v1/spectroclusters/validate/name": { @@ -74298,6 +74391,58 @@ ] } }, + "/v1/spectroclusters/{uid}/upgrade/settings": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersUidUpgradeSettings", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterUpgradeSettingsEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update specific cluster upgrade settings", + "tags": [ + "spectroclusters" + ] + } + }, "/v1/spectroclusters/{uid}/validate/packs": { "post": { "operationId": "v1SpectroClustersUidValidatePacks", @@ -79094,6 +79239,32 @@ ] } }, + "/v1/users/info": { + "get": { + "description": "Returns a basic information of User for the specified uid.", + "operationId": "v1UsersInfoGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserInfo" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the base information of specified User", + "tags": [ + "users" + ] + } + }, "/v1/users/kubectl/session/{sessionUid}": { "get": { "description": "gets users kubectl session", @@ -79358,7 +79529,7 @@ ], "summary": "Returns the users system feature", "tags": [ - "v1" + "users" ] } }, diff --git a/docs/docs-content/automation/palette-cli/commands/validator.md b/docs/deprecated/automation/palette-cli/commands/validator.md similarity index 100% rename from docs/docs-content/automation/palette-cli/commands/validator.md rename to docs/deprecated/automation/palette-cli/commands/validator.md diff --git a/docs/deprecated/integrations/konvoy.md b/docs/deprecated/integrations/konvoy.md index ea7137b653..fe9f805e7e 100644 --- a/docs/deprecated/integrations/konvoy.md +++ b/docs/deprecated/integrations/konvoy.md @@ -70,8 +70,8 @@ create a custom image. The custom image contains the underlying OS and Kubernete :::info -Check out the [RHEL and Konvoy](../byoos/usecases/vmware/konvoy.md) guide to learn how to create a custom image using -the Konvoy image builder project. +Check out the [RHEL and Konvoy](../byoos/image-builder/build-image-vmware/konvoy.md) guide to learn how to create a +custom image using the Konvoy image builder project. ::: @@ -113,6 +113,6 @@ data "spectrocloud_pack_simple" "k8s" { - [Konvoy](https://d2iq.com/products/konvoy) -- [RHEL and Konvoy](../byoos/usecases/vmware/konvoy.md) +- [RHEL and Konvoy](../byoos/image-builder/build-image-vmware/konvoy.md) - [Konvoy Image Builder](https://github.com/mesosphere/konvoy-image-builder) diff --git a/docs/docs-content/automation/automation.md b/docs/docs-content/automation/automation.md index 26959c7b06..9a3c3bda98 100644 --- a/docs/docs-content/automation/automation.md +++ b/docs/docs-content/automation/automation.md @@ -16,14 +16,17 @@ This section contains documentation and guides for tools essential in automating [self-hosted Palette](../enterprise-version/enterprise-version.md) instance and deploying a [Private Cloud Gateway](../clusters/pcg/pcg.md). +- Palette Go SDK - Enables developers to interact with Palette APIs for automated resource management using Go. + - Palette Terraform Provider - Allows users to use [Terraform](https://www.terraform.io) for automating the deployment and management of Palette resources such as cluster profiles, cloud accounts, clusters, and more. -- Palette Crossplane Provider - It allows users to use [Crossplane](https://docs.crossplane.io/v1.15/) to provision and +- Palette Crossplane Provider - Allows users to use [Crossplane](https://docs.crossplane.io/v1.15/) to provision and manage Palette resources through standard Kubernetes APIs. ## Resources - [Palette CLI](./palette-cli/palette-cli.md) +- [Palette Go SDK](./palette-sdk/palette-sdk.md) - [Palette Terraform Provider](./terraform/terraform.md) - [Palette Crossplane Provider](./crossplane/crossplane.md) diff --git a/docs/docs-content/automation/crossplane/_category_.json b/docs/docs-content/automation/crossplane/_category_.json index c3460c6dbd..e7e7c54966 100644 --- a/docs/docs-content/automation/crossplane/_category_.json +++ b/docs/docs-content/automation/crossplane/_category_.json @@ -1,3 +1,3 @@ { - "position": 30 + "position": 40 } diff --git a/docs/docs-content/automation/palette-cli/commands/commands.md b/docs/docs-content/automation/palette-cli/commands/commands.md index dd33001697..cfe3c34eea 100644 --- a/docs/docs-content/automation/palette-cli/commands/commands.md +++ b/docs/docs-content/automation/palette-cli/commands/commands.md @@ -33,9 +33,6 @@ The following list contains all the supported Palette CLI subcommands. Click on - [`project`](project.md) - Manage Palette Projects. -- [`validator`](validator.md) - Deploy a kind cluster and install the Validator framework to validate your environment - is ready for Palette. - ## Global Flags Palette CLI supports the following global flags. @@ -63,6 +60,4 @@ Palette CLI supports the following global flags. - [Project](project.md) -- [Validator](validator.md) - - [Import](import.md) diff --git a/docs/docs-content/automation/palette-cli/install-palette-cli.md b/docs/docs-content/automation/palette-cli/install-palette-cli.md index a7137f9c52..b421ccefe8 100644 --- a/docs/docs-content/automation/palette-cli/install-palette-cli.md +++ b/docs/docs-content/automation/palette-cli/install-palette-cli.md @@ -62,7 +62,7 @@ palette version ``` ```shell hideClipboard -Palette CLI version: 4.4.5 +Palette CLI version: 4.4.6 ``` ## Next Steps diff --git a/docs/docs-content/automation/palette-sdk/_category_.json b/docs/docs-content/automation/palette-sdk/_category_.json new file mode 100644 index 0000000000..455b8e4969 --- /dev/null +++ b/docs/docs-content/automation/palette-sdk/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/automation/palette-sdk/list-clusters-sdk.md b/docs/docs-content/automation/palette-sdk/list-clusters-sdk.md new file mode 100644 index 0000000000..1c590645e8 --- /dev/null +++ b/docs/docs-content/automation/palette-sdk/list-clusters-sdk.md @@ -0,0 +1,184 @@ +--- +sidebar_label: "List Clusters with Palette Go SDK" +title: "List Clusters with Palette Go SDK" +description: "Learn how to use the Palette GO SDK to list your Palette host clusters." +hide_table_of_contents: false +sidebar_position: 10 +tags: ["palette-sdk", "go"] +--- + +The Palette Go Software Developer Toolkit (SDK) enables Go developers to interact with Palette services. This guide +explains how to install and use the SDK to list the active host clusters in your Palette environment. + +## Prerequisites + +- [Go](https://go.dev/doc/install) version 1.22.5 or later. + +- A Palette account with [Tenant Admin](../../tenant-settings/tenant-settings.md) access. + +- A Palette API key. Refer to the [Create API Key](../../user-management/authentication/api-key/create-api-key.md) page + for instructions on how to create an API key. + +## List Palette Clusters + +1. Open a terminal window and create a folder for you Go repository. + + ```bash + mkdir sdk-example + ``` + +2. Navigate to the created folder. + + ```bash + cd sdk-example + ``` + +3. Initialize your Go module and enable dependency tracking for your code by issuing the following command. This will + create a `go.mod` file in the current folder. + + ```bash + go mod init example/list-clusters + ``` + +4. Download the required Palette SDK modules. The command below retrieves the modules and records their dependencies in + the `go.mod` file. + + ```bash + go get github.com/spectrocloud/palette-sdk-go/api/models + go get github.com/spectrocloud/palette-sdk-go/client + ``` + +5. Create a source file named `main.go`. + + ```bash + touch main.go + ``` + +6. Open the `main.go` file in a text editor of your choice and paste the content below. + + ```go + package main + + import ( + "fmt" + "os" + + "github.com/spectrocloud/palette-sdk-go/api/models" + "github.com/spectrocloud/palette-sdk-go/client" + ) + + func main() { + + // Read environment variables + + host := os.Getenv("PALETTE_HOST") + apiKey := os.Getenv("PALETTE_API_KEY") + projectUid := os.Getenv("PALETTE_PROJECT_UID") + scope := "tenant" + + if host == "" || apiKey == "" { + fmt.Println("You must specify the PALETTE_HOST and PALETTE_API_KEY environment variables.") + os.Exit(1) + } + if projectUid != "" { + scope = "project" + } + + // Initialize a Palette client + + pc := client.New( + client.WithPaletteURI(host), + client.WithAPIKey(apiKey), + ) + if projectUid != "" { + client.WithScopeProject(projectUid)(pc) + } else { + client.WithScopeTenant()(pc) + } + + // Search for clusters + + fmt.Printf("Searching for Palette clusters with %s scope...\n", scope) + + clusters, err := pc.SearchClusterSummaries(&models.V1SearchFilterSpec{}, []*models.V1SearchFilterSortSpec{}) + if err != nil { + panic(err) + } + + // Display the results + + if len(clusters) == 0 { + fmt.Println("\nNo clusters found.") + return + } + + fmt.Printf("\nFound %d cluster(s):\n", len(clusters)) + for _, cluster := range clusters { + fmt.Printf("\nName: %s\n", cluster.Metadata.Name) + fmt.Printf(" Cloud Type: %s\n", cluster.SpecSummary.CloudConfig.CloudType) + fmt.Printf(" Project: %s\n", cluster.SpecSummary.ProjectMeta.Name) + } + } + ``` + + This application performs the following tasks: + + - Imports the required packages. + + - Reads the environment variables provided by the user to configure the client and define the search scope. If the + user provides a project UID, the application sets the scope to project-specific and lists the active clusters + within that project. If no project UID is given, the scope is set to tenant-wide, listing active clusters across + all projects. + + - Initializes a Palette client using the provided host URL and Palette API key. + + - Searches for Palette clusters within the specified scope (tenant-wide or project-specific). + + - Displays the active clusters with details such as name, cloud type, and associated project. + + After pasting the content, save and exit the file. + +7. Export your Palette host URL and API key as environment variables. Replace `` with your + Palette URL, such as `console.spectrocloud.com`, and `` with your API key. + + ```bash + export PALETTE_API_KEY= + export PALETTE_HOST= + ``` + +8. Issue the following command to execute the application. + + ```bash + go run . + ``` + + :::tip + + Optionally, instead of exporting the variables in a separate command, you can use the `go run` command with + command-scoped environment variables. + + ```bash + PALETTE_API_KEY= PALETTE_HOST= go run . + ``` + + ::: + + The application will print the active clusters in your Palette environment. + + ```text hideClipboard + Searching for Palette clusters with tenant scope... + + Found 1 cluster(s): + + Name: aws-cluster + Cloud Type: aws + Project: Default + ``` + +## Validate + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left **Main Menu**, click **Clusters**. + +3. Verify that the clusters printed by the Go client application are also visible in the Palette UI. diff --git a/docs/docs-content/automation/palette-sdk/palette-sdk.md b/docs/docs-content/automation/palette-sdk/palette-sdk.md new file mode 100644 index 0000000000..72530b07e6 --- /dev/null +++ b/docs/docs-content/automation/palette-sdk/palette-sdk.md @@ -0,0 +1,42 @@ +--- +sidebar_label: "Palette Go SDK" +title: "Palette Go SDK" +description: "Learn how to get started with the Palette Go SDK." +hide_table_of_contents: false +tags: ["palette-sdk"] +--- + +The [Palette Go Software Developer Toolkit (SDK)](https://github.com/spectrocloud/palette-sdk-go) provides Go developers +a user-friendly client for interacting with Palette APIs. + +## Initialize Palette Client + +The Go Palette client supports the following authentication methods. + +- [JWT](https://github.com/spectrocloud/palette-sdk-go/blob/main/client/client.go#L56) +- [Palette API Key](https://github.com/spectrocloud/palette-sdk-go/blob/main/client/client.go#L49) +- [Username](https://github.com/spectrocloud/palette-sdk-go/blob/main/client/client.go#L63) and + [password](https://github.com/spectrocloud/palette-sdk-go/blob/main/client/client.go#L70) + +The snippet below showcases an example of how to initialize the Palette client using an API key. You must provide a +[Palette URI](https://github.com/spectrocloud/palette-sdk-go/blob/main/client/client.go#L77) for all authentication +methods. + +```go + pc := client.New( + client.WithPaletteURI(host), + client.WithAPIKey(apiKey), + ) +``` + +## Get Started + +Check out the [List Clusters with Palette Go SDK](./list-clusters-sdk.md) example to learn how to install, configure, +and use the SDK. This guide provides instructions and sample code for listing the active clusters in your Palette +environment. Additionally, refer to the [client](https://github.com/spectrocloud/palette-sdk-go/blob/main/client) folder +for a complete list of client configuration options. + +## Resources + +- [Palette SDK Go](https://github.com/spectrocloud/palette-sdk-go) GitHub repository +- [List Clusters with Palette Go SDK](./list-clusters-sdk.md) diff --git a/docs/docs-content/automation/terraform/_category_.json b/docs/docs-content/automation/terraform/_category_.json index 455b8e4969..c3460c6dbd 100644 --- a/docs/docs-content/automation/terraform/_category_.json +++ b/docs/docs-content/automation/terraform/_category_.json @@ -1,3 +1,3 @@ { - "position": 20 + "position": 30 } diff --git a/docs/docs-content/byoos/byoos.md b/docs/docs-content/byoos/byoos.md index 96b1797c80..26348a6dde 100644 --- a/docs/docs-content/byoos/byoos.md +++ b/docs/docs-content/byoos/byoos.md @@ -17,8 +17,28 @@ compliance, or specific hardware configurations. The ability to bring your own OS to Palette gives you more control over dependencies in your environment and ensures compatibility with your existing applications. The OS you bring can be commercial or an open-source distribution. +## Get Started + +To get started with BYOOS, you need to create an OS image and make it available to Palette or VerteX. Review the +[Create Images with Image Builder](../byoos/image-builder/image-builder.md) guide to learn how to create an OS image +using the Kubernetes Image Builder (KIB) project. + +## CAPI Image Builder + +:::preview + +::: + +An alternative to the default image building process that uses the Kubernetes Image Builder (KIB) project is the CAPI +Image Builder. The CAPI Image Builder is a tool we develop and maintain to reduce the challenges of creating images for +Kubernetes clusters. Check out the [Create Images with CAPI Image Builder](./capi-image-builder/capi-image-builder.md) +guide to learn how to use the [CAPI Image Builder](https://github.com/kubernetes-sigs/image-builder) project to create +images for Palette and VerteX. + ## Resources -- [Create Images with Image Builder](../byoos/image-builder.md) +- [Create Images with Image Builder](../byoos/image-builder/image-builder.md) + +- [Create Images with CAPI Image Builder](capi-image-builder/capi-image-builder.md) - diff --git a/docs/docs-content/byoos/capi-image-builder/_category_.json b/docs/docs-content/byoos/capi-image-builder/_category_.json new file mode 100644 index 0000000000..455b8e4969 --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 20 +} diff --git a/docs/docs-content/byoos/usecases/vmware/_category_ .json b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/_category_ .json similarity index 100% rename from docs/docs-content/byoos/usecases/vmware/_category_ .json rename to docs/docs-content/byoos/capi-image-builder/build-image-vmware/_category_ .json diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/build-image-vmware.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/build-image-vmware.md new file mode 100644 index 0000000000..e924c53451 --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/build-image-vmware.md @@ -0,0 +1,24 @@ +--- +sidebar_label: "Build Image for VMware vSphere" +title: "Build Image for VMware vSphere" +description: "Learn how to use the CAPI Image Builder to create images for Palette and VerteX." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["operating system", "byoos", "capi iamge builder"] +--- + +This page contains guides on how to use the CAPI Image Builder tool to create images for Palette and VerteX. The CAPI +Image Builder can be used to build images for Kubernetes clusters deployed through Palette and VerteX that target VMware +vSphere. We encourage you to review the [Configuration Reference](../config-reference.md) and +[Compatibility Matrix](../comp-matrix-capi-builder.md) for more information on how to configure the CAPI Image Builder. + +:::preview + +::: + +## Resources + +- [RHEL and PXK](./rhel-capi.md) + +- [Rocky and PXK](./rocky-capi.md) diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/rhel-capi.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/rhel-capi.md new file mode 100644 index 0000000000..6f34851803 --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/rhel-capi.md @@ -0,0 +1,425 @@ +--- +sidebar_label: "RHEL and PXK" +title: "RHEL and Palette eXtended Kubernetes" +description: + "Learn how to build a custom RHEL with PXK image for VMware vSphere and use it to deploy a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 10 +tags: ["operating system", "byoos", "profiles", "pxk", "vmware"] +--- + + +This guide will teach you how to use the [CAPI Image Builder](../capi-image-builder.md) tool to create a custom Red Hat +Enterprise Linux (RHEL) image with for VMware vSphere and then use this image to create a cluster profile. + +:::preview + +::: + +## Prerequisites + +- Access to the VMware vSphere environment, including credentials and permission to create virtual machines. + +- A valid [RHEL subscription](https://www.redhat.com/en/store/linux-platforms). You will need to provide the username + and password for the subscription during the build process. + +- Access to the [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso). + +- The machine executing the commands must have the following hardware resources available: + + - 4 CPU + - 8 GB of RAM + - 50 GB of free disk space + +- The following software installed: + - [Docker](https://docs.docker.com/engine/install/) or [Podman](https://podman.io/docs/installation) + - [curl](https://curl.se/docs/install.html) + +## Build Custom Image + +1. Open up a terminal session in your Linux machine and download the CAPI Image Builder version `1.5.0`. + + + + + ```shell + docker pull gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0 + ``` + + Confirm that the image was downloaded correctly. + + ```shell + docker images + ``` + + ```text hideClipboard + REPOSITORY TAG IMAGE ID CREATED SIZE + gcr.io/spectro-images-public/imagebuilder/capi-builder v1.5.0 1d891fc2e8da 6 days ago 2.5GB + ``` + + + + + + ```shell + podman pull gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0 + ``` + + Confirm that the image was downloaded correctly. + + ```shell + podman images + ``` + + ```text hideClipboard + REPOSITORY TAG IMAGE ID CREATED SIZE + gcr.io/spectro-images-public/imagebuilder/capi-builder v1.5.0 1d891fc2e8da 6 days ago 2.5GB + ``` + + + + +2. Create an output directory to store the image files and set the required permissions. + + ```shell + mkdir /home/ubuntu/output + chmod a+rwx /home/ubuntu/output + ``` + +3. Navigate to the output directory. + + ```shell + cd /home/ubuntu/output + ``` + +4. Download the RHEL ISO file from the + [Red Hat Developer Portal](https://developers.redhat.com/products/rhel/download?source=sso) into the output + directory. Ensure you download the **x86_64 DVD ISO** and not the **x86_64 BOOT ISO**. Replace + `` in the command below with the direct link to download the RHEL ISO. + + This guide uses RHEL 8.8 as an example. Refer to the [Configuration Reference](../config-reference.md) page for + details on supported operating systems. + + ```shell + curl --output rhel-8.8-x86_64-dvd.iso + ``` + +5. Calculate the **SHA256** checksum for the RHEL ISO you downloaded. The calculation might take a few minutes. Save + the output, as you will need it later. + + ```shell + sha256sum rhel-8.8-x86_64-dvd.iso + ``` + + The output should be similar to the sample output displayed below. + + ```text hideClipBoard + 519abcc58ee3b7212f57e180f5d30be3e8269e7a99e123a3399b7935c7e00a09 rhel-8.8-x86_64-dvd.iso + ``` + +6. Download the **imageconfig** template file. + + ```shell + curl https://software.spectrocloud.com/tools/capi-image-builder/imageconfig --output imageconfig + ``` + +7. Open the **imageconfig** template file in an editor of your choice and fill in the required parameters. For a + complete list of parameters, refer to the [Configuration Reference](../config-reference.md) page. Additionally, + refer to the [Compatibility Matrix](../comp-matrix-capi-builder.md) for a list of supported Kubernetes versions and + their corresponding dependencies. + + The **imageconfig** is the file you use to set up the CAPI Image Builder according to your requirements. This + includes specifying the OS type, Kubernetes version, whether the image should be FIPS compliant, and more. + + Use the example configuration below for building a RHEL 8 CAPI image. Replace `` and + `` with your RHEL subscription credentials. Use the SHA256 checksum of the RHEL ISO from + step **5** of this guide for ``. Additionally, replace the VMware-related placeholders with the values + from your VMware vSphere environment. + + ```text {4-5,9,13,19-22,26-27,30-31,38-46,64} + # Define the OS type and version here + # os_version=rhel-8 | rhel-9 | rockylinux-8 | rockylinux-9 + # image_type=standard | fips + os_version=rhel-8 + image_type=standard + + # Define the image name + # image_name= + image_name=rhel-8 + + # Define the Cloud type + # cloud_type=vmware + cloud_type=vmware + + # Define the Component Versions + # + # containerd crictl and cni version update should be done + # only if the images are available in the upstream repositories + k8s_version=1.28.9 + cni_version=1.2.0 + containerd_version=1.7.13 + crictl_version=1.26.0 + + # Define RHEL subscription credentials(if $image_type=rhel) + # used while image creation to use package manager + rhel_subscripocky-8user='' + rhel_subscription_pass='' + + # Define ISO url(if image is rhel or rockylinux) + iso_name=rhel-8.8-x86_64-dvd.iso + iso_checksum= + + # Define AWS infra details + aws_access_key= + aws_secret_key= + + # Define Vmware infra details + vcenter_server= + vcenter_user= + vcenter_password= + vcenter_datacenter= + vcenter_datastore= + vcenter_network= + vcenter_folder= + vcenter_cluster= + vcenter_resource_pool= + + # Optional: for OVA based builds + vcenter_template= + + # Define Azure infra details + azure_client_id= + azure_client_secret= + azure_subscription_id= + azure_location= + azure_storage_account= + azure_resource_group= + + # Define GCE infra details + google_app_creds= + gcp_project_id= + + # Airgap Configuration + airgap=false + airgap_ip="" + k8s_rpm_key= + k8s_rpm_server= + containerd_url= + crictl_url= + k8s_container_reg= + cert_url= + ``` + + :::tip + + To build a FIPS-compliant image, set `image_type` to `fips`. + + ::: + + Once you are done making the alterations, save and exit the file. + +8. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID` + variable. The tool will create and configure a VM named `rhel-8` with Dynamic Host Configuration Protocol (DHCP) in + your VMware vSphere environment. It will then generate a RHEL 8 CAPI image from the VM and save it to the output + directory specified in step **2** of this guide. + + + + + + ```bash + BUILD_ID=$(docker run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + + + ```bash + BUILD_ID=$(podman run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + + + If you need the VM to use static IP placement instead of DHCP, follow the steps described below. + + +
+ CAPI Image Builder with Static IP Placement + + 1. Download the RHEL 8 `ks.cfg` file from the [Image Builder](https://github.com/kubernetes-sigs/image-builder) + GitHub repository directly into the output folder. + + ```shell + curl --location https://github.com/kubernetes-sigs/image-builder/raw/main/images/capi/packer/ova/linux/rhel/http/8/ks.cfg --output ks.cfg + ``` + + 2. Open the `ks.cfg` file in an editor of your choice. Locate and replace the network lines + `network --bootproto=dhcp --device=link --activate network --hostname=rhel8` with the configuration below. + + ```text + network --bootproto=static --ip= --netmask= --gateway= --nameserver= + ``` + + Then, replace `` with a valid IP address from your VMware vSphere environment, and + ``, ``, and `` with the correct values from your VMware vSphere + environment. + + Once you are finished doing the alterations, save and exit the file. + + 3. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID` + variable. The tool will use the **imageconfig** file to create and configure a VM with static IP placement in + your VMware vSphere environment. + + + + + ```bash + BUILD_ID=$(docker run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + + ```bash + BUILD_ID=$(podman run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + +
+ +9. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. + + + + + ```shell + docker logs --follow $BUILD_ID + ``` + + + + + + ```shell + podman logs --follow $BUILD_ID + ``` + + + + + + :::info + + It may take a few minutes for the logs to start being displayed, and the build takes several minutes to complete. + + ::: + +10. Once the build is complete, the RHEL 8 CAPI image will be downloaded to a folder named `rhel-8` within the output + directory on your machine, and the VM will be deleted from VMware vSphere. Issue the command below to confirm that + the build files are present in the output directory. + + ```shell + ls rhel-8 + ``` + + ```text hideClipboard + packer-manifest.json rhel-8-kube-v1.28.9.mf rhel-8-kube-v1.28.9.ova.sha256 rhel-8.ovf rhel-8-disk-0.vmdk rhel-8-kube-v1.28.9.ova rhel-8-kube-v1.28.9.ovf + ``` + +11. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you + defined in step **7** of this guide. + + :::info + + You can also use the following steps to make the image available in a VMware vSphere environment that is not + connected to the one you used for building the image. + + ::: + +12. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the RHEL 8 OVA file that was built in + step **8** of this guide. + +13. In the **Deploy OVF Template** wizard, click **Local File**, then **Upload Files**, and select the + `rhel-8-kube-v1.28.9.ova` file from the output folder on your local machine. Click **Next** to continue. + +14. Assign a name to the virtual machine, such as `rhel-8-kube-v1.28.9`, and select the folder you created previously as + the target location. Click **Next** to proceed. + +15. Select a compute resource and click **Next**. + +16. Review the VM configuration, accept the license agreements, and click **Next**. + +17. Select the storage location and network configuration and click **Next**. Then, click **Finish** to deploy the VM. + + :::warning + + It takes a while for the VM to deploy, approximately 45 minutes or more, depending on your internet connection. The + download of the OVA file takes up the majority of the time. You can monitor the progress of this process in VMware + vSphere by looking at the **Recent Tasks** tab and filtering the **Task Name** column by `Deploy OVF Template`. + + ::: + +18. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a RHEL 8 + image template that you can reference during the cluster profile creation. + +## Create Cluster Profile + +The RHEL 8 image is now built and available in the VMware vSphere environment. You can use it to create a cluster +profile and deploy a VMware host cluster. + +19. Log in to [Palette](https://console.spectrocloud.com/) and select **Profiles** from the left **Main Menu**. + +20. Click **Add Cluster Profile** and follow the wizard to create a new profile. + +21. In the **Basic Information** section, assign the cluster profile a name and a brief description, and select the type + as **Full**. Click **Next**. + +22. In the **Cloud Type** section, select **VMware** and click **Next**. + +23. The **Profile Layers** section is where you specify the packs that compose the profile. For this guide, use the + following packs: + + | Pack Name | Version | Layer | + | --------------------------- | ------- | ---------------- | + | BYOOS | 1.0.0 | Operating System | + | Palette eXtended Kubernetes | 1.28.9 | Kubernetes | + | Cilium | 1.15.3 | Network | + | vSphere CSI | 3.2.0 | Storage | + + + Reference the custom RHEL 8 image template path in your VMware vSphere environment when populating the pack details + for the layer. + + ```yaml + pack: + osImageOverride: "/Datacenter/vm/sp-docs/rhel-8-kube-v1.28.9" + osName: "rhel" + osVersion: "8" + ``` + + As you fill out the information for each layer, click **Next** to proceed. + + :::warning + + The Palette eXtended Kubernetes pack version must match the Kubernetes version specified in the **imageconfig** + file. + + ::: + +24. Review the profile layers and click **Finish Configuration** to create the cluster profile. + +25. Deploy a VMware host cluster using the created cluster profile. Refer to the + [Deploy App Workloads with a PCG](../../../tutorials/cluster-deployment/pcg/deploy-app-pcg.md) tutorial for + instructions on deploying a VMware host cluster. + +## Validate + +1. Log in to the VMware vSphere environment and navigate to the **Inventory** view. + +2. Select the **VMs and Templates** tab and verify the custom RHEL 8 image is available. diff --git a/docs/docs-content/byoos/capi-image-builder/build-image-vmware/rocky-capi.md b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/rocky-capi.md new file mode 100644 index 0000000000..912a7763c6 --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/build-image-vmware/rocky-capi.md @@ -0,0 +1,417 @@ +--- +sidebar_label: "Rocky and PXK" +title: "Rocky and Palette eXtended Kubernetes" +description: + "Learn how to build a custom Rocky with PXK image for VMware vSphere and use it to deploy a Kubernetes cluster." +icon: "" +hide_table_of_contents: false +sidebar_position: 20 +tags: ["operating system", "byoos", "profiles", "pxk", "vmware"] +--- + + +This guide will teach you how to use the [CAPI Image Builder](../capi-image-builder.md) tool to create a custom +[Rocky Linux](https://rockylinux.org/) image with for VMware vSphere and then use this image to create a cluster profile. + +:::preview + +::: + +## Prerequisites + +- Access to the VMware vSphere environment, including credentials and permission to create virtual machines. + +- The machine executing the commands must have the following hardware resources available: + + - 4 CPU + - 8 GB of RAM + - 50 GB of free disk space + +- The following software installed: + - [Docker](https://docs.docker.com/engine/install/) or [Podman](https://podman.io/docs/installation) + - [curl](https://curl.se/docs/install.html) + +## Build Custom Image + +1. Open up a terminal session in your Linux machine and download the CAPI Image Builder version `1.5.0`. + + + + + ```shell + docker pull gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0 + ``` + + Confirm that the image was downloaded correctly. + + ```shell + docker images + ``` + + ```text hideClipboard + REPOSITORY TAG IMAGE ID CREATED SIZE + gcr.io/spectro-images-public/imagebuilder/capi-builder v1.5.0 1d891fc2e8da 6 days ago 2.5GB + ``` + + + + + + ```shell + podman pull gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0 + ``` + + Confirm that the image was downloaded correctly. + + ```shell + podman images + ``` + + ```text hideClipboard + REPOSITORY TAG IMAGE ID CREATED SIZE + gcr.io/spectro-images-public/imagebuilder/capi-builder v1.5.0 1d891fc2e8da 6 days ago 2.5GB + ``` + + + + +2. Create an output directory to store the image files and set the required permissions. + + ```shell + mkdir /home/ubuntu/output + chmod a+rwx /home/ubuntu/output + ``` + +3. Navigate to the output directory. + + ```shell + cd /home/ubuntu/output + ``` + +4. Download the Rocky Linux ISO file into the output directory. Ensure you download the **x86_64 DVD ISO** and not the + **x86_64 BOOT ISO**. + + This guide uses Rocky 8 as an example. Refer to the [Configuration Reference](../config-reference.md) page for + details on supported operating systems. + + ```shell + curl https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8-latest-x86_64-dvd.iso --output Rocky-8-latest-x86_64-dvd.iso + ``` + +5. Calculate the **SHA256** checksum for the Rocky ISO you downloaded. The calculation might take a few minutes. Save + the output, as you will need it later. + + ```shell + sha256sum Rocky-8-latest-x86_64-dvd.iso + ``` + + The output should be similar to the sample output displayed below. + + ```text hideClipBoard + 642ada8a49dbeca8cca6543b31196019ee3d649a0163b5db0e646c7409364eeb Rocky-8-latest-x86_64-dvd.iso + ``` + +6. Download the **imageconfig** template file. + + ```shell + curl https://software.spectrocloud.com/tools/capi-image-builder/imageconfig --output imageconfig + ``` + +7. Open the **imageconfig** template file in an editor of your choice and fill in the required parameters. For a + complete list of parameters, refer to the [Configuration Reference](../config-reference.md) page. Additionally, + refer to the [Compatibility Matrix](../comp-matrix-capi-builder.md) for a list of supported Kubernetes versions and + their corresponding dependencies. + + The **imageconfig** is the file you use to set up the CAPI Image Builder according to your requirements. This + includes specifying the OS type, Kubernetes version, whether the image should be FIPS compliant, and more. + + Use the example configuration below for building a Rocky 8 CAPI image. Replace `` with the Rocky ISO + checksum you calculated in step **5** of this guide. Additionally, replace the VMware-related placeholders with the + values from your VMware vSphere environment. + + ```text {4-5,9,13,19-22,30-31,38-46,64} + # Define the OS type and version here + # os_version=rhel-8 | rhel-9 | rockylinux-8 | rockylinux-9 + # image_type=standard | fips + os_version=rockylinux-8 + image_type=standard + + # Define the image name + # image_name= + image_name=rocky-8 + + # Define the Cloud type + # cloud_type=vmware + cloud_type=vmware + + # Define the Component Versions + # + # containerd crictl and cni version update should be done + # only if the images are available in the upstream repositories + k8s_version=1.28.9 + cni_version=1.2.0 + containerd_version=1.7.13 + crictl_version=1.26.0 + + # Define RHEL subscription credentials(if $image_type=rhel) + # used while image creation to use package manager + #rhel_subscripocky-8user= + #rhel_subscription_pass= + + # Define ISO url(if image is rhel or rockylinux) + iso_name=Rocky-8-latest-x86_64-dvd.iso + iso_checksum= + + # Define AWS infra details + aws_access_key= + aws_secret_key= + + # Define Vmware infra details + vcenter_server= + vcenter_user= + vcenter_password= + vcenter_datacenter= + vcenter_datastore= + vcenter_network= + vcenter_folder= + vcenter_cluster= + vcenter_resource_pool= + + # Optional: for OVA based builds + vcenter_template= + + # Define Azure infra details + azure_client_id= + azure_client_secret= + azure_subscription_id= + azure_location= + azure_storage_account= + azure_resource_group= + + # Define GCE infra details + google_app_creds= + gcp_project_id= + + # Airgap Configuration + airgap=false + airgap_ip="" + k8s_rpm_key= + k8s_rpm_server= + containerd_url= + crictl_url= + k8s_container_reg= + cert_url= + ``` + + :::tip + + To build a FIPS-compliant image, set `image_type` to `fips`. + + ::: + + Once you are done making the alterations, save and exit the file. + +8. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID` + variable. The tool will create and configure a VM named `rocky-8` with Dynamic Host Configuration Protocol (DHCP) in + your VMware vSphere environment. It will then generate a Rocky 8 CAPI image from the VM and save it to the output + directory specified in step **2** of this guide. + + + + + + ```bash + BUILD_ID=$(docker run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + + + ```bash + BUILD_ID=$(podman run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + + + If you need the VM to use static IP placement instead of DHCP, follow the steps described below. + + +
+ CAPI Image Builder with Static IP Placement + + 1. Download the Rocky 8 `ks.cfg` file from the [Image Builder](https://github.com/kubernetes-sigs/image-builder) + GitHub repository directly into the output folder. + + ```shell + curl --location https://github.com/kubernetes-sigs/image-builder/raw/main/images/capi/packer/ova/linux/rockylinux/http/8/ks.cfg --output ks.cfg + ``` + + 2. Open the `ks.cfg` file in an editor of your choice. Locate and replace the network line + `network --bootproto=dhcp --onboot=on --ipv6=auto --activate --hostname=capv.vm` with the configuration below. + + ```text + network --bootproto=static --ip= --netmask= --gateway= --nameserver= + ``` + + Then, replace `` with a valid IP address from your VMware vSphere environment, and + ``, ``, and `` with the correct values from your VMware vSphere + environment. + + Once you are finished doing the alterations, save and exit the file. + + 3. Issue the command below to start the CAPI Image Builder container and assign the container ID to the `BUILD_ID` + variable. The tool will use the **imageconfig** file to create and configure a VM with static IP placement in + your VMware vSphere environment. + + + + + ```bash + BUILD_ID=$(docker run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + + ```bash + BUILD_ID=$(podman run --net=host --volume /home/ubuntu/output:/home/imagebuilder/output --detach gcr.io/spectro-images-public/imagebuilder/capi-builder:v1.5.0) + ``` + + + + +
+ +9. Execute the following command to view the CAPI Image Builder container logs and monitor the build progress. + + + + + ```shell + docker logs --follow $BUILD_ID + ``` + + + + + + ```shell + podman logs --follow $BUILD_ID + ``` + + + + + + :::info + + It may take a few minutes for the logs to start being displayed, and the build takes several minutes to complete. + + ::: + +10. Once the build is complete, the Rocky 8 CAPI image will be downloaded to a folder named `rocky-8` within the output + directory on your machine, and the VM will be deleted from VMware vSphere. Issue the command below to confirm that + the build files are present in the output directory. + + ```shell + ls rocky-8 + ``` + + ```text hideClipboard + packer-manifest.json rockylinux-8-kube-v1.28.9.mf rockylinux-8-kube-v1.28.9.ovfrocky-8-disk-0.vmdk rockylinux-8-kube-v1.28.9.ova rocky-8.ovf rockylinux-8-kube-v1.28.9.ova.sha256 + ``` + +11. To make the image available in VMware vSphere, log in to your environment and locate the `vcenter_folder` you + defined in step **7** of this guide. + + :::info + + You can also use the following steps to make the image available in a VMware vSphere environment that is not + connected to the one you used for building the image. + + ::: + +12. Right-click the folder and select **Deploy OVF Template** to deploy a VM using the Rocky 8 OVA file that was built + in step **8** of this guide. + +13. In the **Deploy OVF Template** wizard, click **Local File**, then **Upload Files**, and select the + `rockylinux-8-kube-v1.28.9.ova` file from the output folder on your local machine. Click **Next** to continue. + +14. Assign a name to the virtual machine, such as `rockylinux-8-kube-v1.28.9`, and select the folder you created + previously as the target location. Click **Next** to proceed. + +15. Select a compute resource and click **Next**. + +16. Review the VM configuration, accept the license agreements, and click **Next**. + +17. Select the storage location and network configuration and click **Next**. Then, click **Finish** to deploy the VM. + + :::warning + + It takes a while for the VM to deploy, approximately 45 minutes or more, depending on your internet connection. The + download of the OVA file takes up the majority of the time. You can monitor the progress of this process in VMware + vSphere by looking at the **Recent Tasks** tab and filtering the **Task Name** column by `Deploy OVF Template`. + + ::: + +18. Once the VM is created, right-click it and select **Convert to Template**. This will convert the VM into a Rocky 8 + image template that you can reference during the cluster profile creation. + +## Create Cluster Profile + +The Rocky 8 image is now built and available in the VMware vSphere environment. You can use it to create a cluster +profile and deploy a VMware host cluster. + +19. Log in to [Palette](https://console.spectrocloud.com/) and select **Profiles** from the left **Main Menu**. + +20. Click **Add Cluster Profile** and follow the wizard to create a new profile. + +21. In the **Basic Information** section, assign the cluster profile a name and a brief description, and select the type + as **Full**. Click **Next**. + +22. In the **Cloud Type** section, select **VMware** and click **Next**. + +23. The **Profile Layers** section is where you specify the packs that compose the profile. For this guide, use the + following packs: + + | Pack Name | Version | Layer | + | --------------------------- | ------- | ---------------- | + | BYOOS | 1.0.0 | Operating System | + | Palette eXtended Kubernetes | 1.28.9 | Kubernetes | + | Cilium | 1.15.3 | Network | + | vSphere CSI | 3.2.0 | Storage | + + + Reference the custom Rocky 8 image template path in your VMware vSphere environment when populating the pack details + for the layer. + + ```yaml + pack: + osImageOverride: "/Datacenter/vm/sp-docs/rockylinux-8-kube-v1.28.9" + osName: "rockylinux" + osVersion: "8" + ``` + + As you fill out the information for each layer, click **Next** to proceed. + + :::warning + + The Palette eXtended Kubernetes pack version must match the Kubernetes version specified in the **imageconfig** + file. + + ::: + +24. Review the profile layers and click **Finish Configuration** to create the cluster profile. + +25. Deploy a VMware host cluster using the created cluster profile. Refer to the + [Deploy App Workloads with a PCG](../../../tutorials/cluster-deployment/pcg/deploy-app-pcg.md) tutorial for + instructions on deploying a VMware host cluster. + +## Validate + +1. Log in to the VMware vSphere environment and navigate to the **Inventory** view. + +2. Select the **VMs and Templates** tab and verify the custom Rocky 8 image is available. diff --git a/docs/docs-content/byoos/capi-image-builder/capi-image-builder.md b/docs/docs-content/byoos/capi-image-builder/capi-image-builder.md new file mode 100644 index 0000000000..4c37110d18 --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/capi-image-builder.md @@ -0,0 +1,33 @@ +--- +sidebar_label: "CAPI Image Builder" +title: "CAPI Image Builder" +description: "Learn how to use the CAPI Image Builder project to create images for Palette and VerteX." +icon: "" +hide_table_of_contents: false +sidebar_position: 0 +tags: ["operating system", "byoos", "capi iamge builder"] +--- + +The CAPI Image Builder is a tool we developed and maintain to reduce the challenges associated with creating images for +Kubernetes clusters. It is based on the upstream +[Kubernetes Image Builder (KIB)](https://image-builder.sigs.k8s.io/introduction.html) project. + +The tool includes all the dependencies required to build FIPS and non-FIPS images within a Docker container, eliminating +the need to install any dependencies on your local machine. + +:::preview + +::: + +## Get Started + +Refer to the [Build Image for VMware vSphere](./build-image-vmware/build-image-vmware.md) guide to learn how to use the +CAPI Image Builder tool to create an OS image for Kubernetes clusters that target VMware vSphere. + +## Resources + +- [Build Image for VMware vSphere](./build-image-vmware/build-image-vmware.md) + +- [Configuration Reference](./config-reference.md) + +- [Compatibility Matrix](./comp-matrix-capi-builder.md) diff --git a/docs/docs-content/byoos/capi-image-builder/comp-matrix-capi-builder.md b/docs/docs-content/byoos/capi-image-builder/comp-matrix-capi-builder.md new file mode 100644 index 0000000000..212722d896 --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/comp-matrix-capi-builder.md @@ -0,0 +1,18 @@ +--- +sidebar_label: "Compatibility Matrix" +title: "CAPI Image Builder Compatibility Matrix" +description: "Learn about the compatible configurations for the CAPI Image Builder project." +icon: "" +hide_table_of_contents: false +sidebar_position: 40 +tags: ["operating system", "byoos", "capi image builder"] +--- + +This page lists the supported Kubernetes versions for the CAPI Image Builder, along with the compatible versions of its +dependencies. + +| Kubernetes Version | Dependencies Version | +| ------------------ | ------------------------------------------------------------------------------------------- | +| 1.27.13 | `cni_version` = 1.2.0
`containerd_version` = 1.7.13
`crictl_version` = 1.26.0 | +| 1.28.9 | `cni_version` = 1.2.0
`containerd_version` = 1.7.13
`crictl_version` = 1.26.0 | +| 1.29.4 | `cni_version` = 1.3.0
`containerd_version` = 1.7.13
`crictl_version` = 1.28.0 | diff --git a/docs/docs-content/byoos/capi-image-builder/config-reference.md b/docs/docs-content/byoos/capi-image-builder/config-reference.md new file mode 100644 index 0000000000..73ae94ae0a --- /dev/null +++ b/docs/docs-content/byoos/capi-image-builder/config-reference.md @@ -0,0 +1,156 @@ +--- +sidebar_label: "Configuration Reference" +title: "Configuration Reference" +description: "Learn about the configuration options available for the CAPI Image Builder project." +icon: "" +hide_table_of_contents: false +sidebar_position: 30 +tags: ["operating system", "byoos", "capi image builder"] +--- + +The CAPI Image Builder utility is configured using a configuration file that includes the parameters documented below. +Review these parameters to understand how to tailor the CAPI Image Builder to your specific use case. + +:::warning + +At this time, VMware vSphere is the only supported infrastructure provider for the CAPI Image Builder, and only +non-airgap workflows are available. + +::: + +## Operating System Configuration + +| Parameter | Description | Required | +| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- | -------- | +| `os_versions` | A list of operating system versions to build. Available options are `rhel-8`, `rhel-9`, `rockylinux-8`, `rockylinux-9`. | Yes | +| `image_type` | The type of image to build. Available options are `standard` or `fips`. | Yes | +| `rhel_subscription_user` | The RHEL subscription username to use when building the image. | No | +| `rhel_subscription_pass` | The RHEL subscription password to use when building the image. | No | + +## Image Configuration + +| Parameter | Description | Required | +| ------------ | ------------------------------------------------------------------------------------------------ | -------- | +| `image_name` | The name of the image to build. | Yes | +| `cloud_type` | The cloud type to build the image for. Available options are `aws`, `azure`, `gcp` and `vmware`, | Yes | + +## Kubernetes Configuration + +Refer to the [CAPI Image Builder Compatibility Matrix](./comp-matrix-capi-builder.md) file for a list of supported +Kubernetes versions and the corresponding compatible versions of its dependencies. + +| Parameter | Description | Required | +| -------------------- | ----------------------------------------------------------------------------- | -------- | +| `k8s_version` | The Kubernetes version to use when building the image. | Yes | +| `cni_version` | The Container Network Interface (CNI) version to use when building the image. | Yes | +| `containerd_version` | The containerd version to use when building the image. | Yes | +| `crictl_version` | The crictl version to use when building the image. | Yes | + +## ISO Configuration + +| Parameter | Description | Required | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `iso_name` | The name of the ISO file to use when building the image. The ISO file is expected to be located inside the **output** folder. | Yes | +| `iso_checksum` | The SHA256 checksum of the ISO file to use when building the image. The checksum is used to verify the integrity of the ISO file. | Yes | + +## Infrastructure Configuration + +Fill out the parameters below for the infrastructure provider for which you are building the image. These parameters are +required for authenticating with the provider and uploading the image. Do not fill in the parameters for any other +providers. + +:::info + +Only one infrastructure provider can be used at a time. If you need to build images for multiple providers, you need to +create a separate configuration file for each. + +::: + +### AWS + +| Parameter | Description | Required | +| ---------------- | -------------------------------------------------- | -------- | +| `aws_access_key` | The AWS access key to use when building the image. | Yes | +| `aws_secret_key` | The AWS secret key to use when building the image. | Yes | + +### Azure + +| Parameter | Description | Required | +| ----------------------- | --------------------------------------------------------- | -------- | +| `azure_client_id` | The Azure client ID to use when building the image. | Yes | +| `azure_client_secret` | The Azure client secret to use when building the image. | Yes | +| `azure_subscription_id` | The Azure subscription ID to use when building the image. | Yes | +| `azure_location` | The Azure location to use when building the image. | Yes | +| `azure_storage_account` | The Azure storage account to use when building the image. | Yes | +| `azure_resource_group` | The Azure resource group to use when building the image. | Yes | + +### GCP + +| Parameter | Description | Required | +| ------------------ | ----------------------------------------------------------------------------------- | -------- | +| `google_app_creds` | The path to the Google Application Credentials file to use when building the image. | Yes | +| `gcp_project_id` | The GCP project ID to use when building the image. | Yes | + +### VMware + +| Parameter | Description | Required | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------- | +| `vcenter_server` | The vCenter server to use when building the image. Provide either a Fully Qualified Domain Name (FQDN) or an IP address. | Yes | +| `vcenter_user` | The vCenter user to use when building the image. | Yes | +| `vcenter_password` | The vCenter password to use when building the image. | Yes | +| `vcenter_datacenter` | The vCenter data center to use when building the image. | Yes | +| `vcenter_datastore` | The vCenter datastore to use when building the image. | Yes | +| `vcenter_network` | The vCenter network to use when building the image. | Yes | +| `vcenter_folder` | The vCenter folder to use when building the image. | Yes | +| `vcenter_cluster` | The vCenter cluster to use when building the image. | Yes | +| `vcenter_resource_pool` | The vCenter resource pool to use when building the image. | Yes | + +## Airgap Configuration + +Fill out the parameters below if you are building the image in an air-gapped environment. Otherwise, you can skip this +section. + +| Parameter | Description | Required | +| ------------------- | -------------------------------------------------------------------------------- | -------- | +| `airgap` | Set to `true` if you are building the image in an air-gapped environment. | Yes | +| `airgap_ip` | The IP address of the machine that has the required dependencies. | Yes | +| `k8s_rpm_key` | The GPG key to use when installing the Kubernetes RPMs. | Yes | +| `k8s_rpm_server` | The IP address or FQDN of the server to use when installing the Kubernetes RPMs. | Yes | +| `containerd_url` | The URL to use when downloading the containerd binary. | Yes | +| `crictl_url` | The URL to use when downloading the crictl binary. | Yes | +| `k8s_container_reg` | The URL of the container registry to use when downloading the Kubernetes images. | Yes | +| `cert_url` | The URL to use when downloading the certificate file. | Yes | + +## Example Configuration + +```text +os_version=rhel-8 +image_type=standard +rhel_subscription_user='demo@spectrocloud.com' +rhel_subscription_pass='***********' + + +image_name=rhel-8-custom +cloud_type=vmware + + +k8s_version=1.28.9 +cni_version=1.2.0 +containerd_version=1.7.13 +crictl_version=1.26.0 + + +iso_name=rhel-8.8-x86_64-dvd.iso +iso_checksum=517abcc67ee3b7212f57e180f5d30be3e8269e7a99e127a3399b7935c7e00a09 + + +vcenter_server=example.vcenter.dev +vcenter_user=demo@vsphere.local +vcenter_password='***********' +vcenter_datacenter=Datacenter +vcenter_datastore=vsanDatastorePrimary +vcenter_network=NETOWRK-1 +vcenter_folder=teamA +vcenter_cluster=teamA-cluster +vcenter_resource_pool=teamA-resource-pool +``` diff --git a/docs/docs-content/byoos/_category_ copy.json b/docs/docs-content/byoos/image-builder/_category_.json similarity index 100% rename from docs/docs-content/byoos/_category_ copy.json rename to docs/docs-content/byoos/image-builder/_category_.json diff --git a/docs/docs-content/byoos/image-builder/build-image-vmware/_category_ .json b/docs/docs-content/byoos/image-builder/build-image-vmware/_category_ .json new file mode 100644 index 0000000000..094470741d --- /dev/null +++ b/docs/docs-content/byoos/image-builder/build-image-vmware/_category_ .json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/byoos/usecases/vmware/vmware.md b/docs/docs-content/byoos/image-builder/build-image-vmware/build-image-vmware.md similarity index 56% rename from docs/docs-content/byoos/usecases/vmware/vmware.md rename to docs/docs-content/byoos/image-builder/build-image-vmware/build-image-vmware.md index 7cc63db68d..60e4424186 100644 --- a/docs/docs-content/byoos/usecases/vmware/vmware.md +++ b/docs/docs-content/byoos/image-builder/build-image-vmware/build-image-vmware.md @@ -1,14 +1,14 @@ --- -sidebar_label: "VMware" -title: "VMware" +sidebar_label: "Build Image for VMware vSphere" +title: "Build Image for VMware vSphere" description: "Learn how to build and use custom OS images for Kubernetes clusters on VMware vSphere." hide_table_of_contents: false sidebar_position: 10 tags: ["operating system", "byoos", "profiles", "use cases", "vmware"] --- -Review the resource sections below for examples of how to build and use custom OS images for Kubernetes clusters that -use VMware vSphere as the infrastructure platform. +Review the guides below for examples on how to build custom OS images for Kubernetes clusters that use VMware vSphere as +the infrastructure platform. ## Resources diff --git a/docs/docs-content/byoos/usecases/vmware/konvoy.md b/docs/docs-content/byoos/image-builder/build-image-vmware/konvoy.md similarity index 100% rename from docs/docs-content/byoos/usecases/vmware/konvoy.md rename to docs/docs-content/byoos/image-builder/build-image-vmware/konvoy.md diff --git a/docs/docs-content/byoos/usecases/vmware/rhel-pxk.md b/docs/docs-content/byoos/image-builder/build-image-vmware/rhel-pxk.md similarity index 99% rename from docs/docs-content/byoos/usecases/vmware/rhel-pxk.md rename to docs/docs-content/byoos/image-builder/build-image-vmware/rhel-pxk.md index caa6b7f0c9..43e3baf30d 100644 --- a/docs/docs-content/byoos/usecases/vmware/rhel-pxk.md +++ b/docs/docs-content/byoos/image-builder/build-image-vmware/rhel-pxk.md @@ -4,7 +4,7 @@ title: "RHEL and Palette eXtended Kubernetes" description: "Learn how to build a custom RHEL with PXK for VMware vSphere and use it to deploy a Kubernetes cluster." icon: "" hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["operating system", "byoos", "profiles", "pxk", "vmware"] --- @@ -35,8 +35,6 @@ Before you begin, ensure that you have the following prerequisites met. - Git installed. - Ubuntu 22.04 LTS or later. -
- :::info You may choose to use a different Linux distribution, but the commands in this guide are specific to Ubuntu. diff --git a/docs/docs-content/byoos/image-builder.md b/docs/docs-content/byoos/image-builder/build-image.md similarity index 81% rename from docs/docs-content/byoos/image-builder.md rename to docs/docs-content/byoos/image-builder/build-image.md index 0c769dfe89..9f24cd01fc 100644 --- a/docs/docs-content/byoos/image-builder.md +++ b/docs/docs-content/byoos/image-builder/build-image.md @@ -1,46 +1,19 @@ --- -sidebar_label: "Create Images with Image Builder" -title: "Create Images with Image Builder" -description: "Learn how to use the Image Builder project to create images for Palette." +sidebar_label: "Build Image" +title: "Build Image" +description: + "Learn how to build a custom image for your infrastructure provider and use it to deploy a Kubernetes cluster." icon: "" hide_table_of_contents: false sidebar_position: 0 -tags: ["operating system", "byoos", "profiles", "cluster profiles"] +tags: ["operating system", "byoos", "profiles"] --- -You can create and deploy custom images to most infrastructure providers using various tools. Many infrastructure -providers have tools that you can use to create custom images for the platform, such as -[AWS EC2 Image Builder](https://aws.amazon.com/image-builder/) for AWS or -[Azure VM Image Builder](https://azure.microsoft.com/en-us/products/image-builder) for Azure. You can also use platform -agnostic tools, such as [HashiCorp Packer](https://developer.hashicorp.com/packer), or something more tailored to -Kubernetes, such as the [Kubernetes Image Builder](https://image-builder.sigs.k8s.io/introduction.html) (KIB) project. +This guide will teach you how to use the [Kubernetes Image Builder](https://image-builder.sigs.k8s.io/introduction.html) +(KIB) project to create images for your infrastructure provider so that you can use the custom images in a Palette +cluster profile. -## Kubernetes Image Builder - -KIB is a project designed to help users create images for various platforms. The project is a consolidation of multiple -tools that together work to create an artifact, or in simpler terms, a custom image. - -You can use the custom images created by KIB with Palette, assuming the infrastructure provider is supported in Palette. -Use the following diagram to understand how you can use KIB to create custom images that you can use with Palette. - -![A diagram displaying the steps for creating a custom image](/cluster-profiles_byoos_image-builder_workflow-diagram.webp) - -
- -1. Download the KIB project and configure the image builder's **packer.json** file. - -2. Use the `make` command to create a custom image containing a specific Operating System (OS) version and flavor. - -3. The custom image is created and distributed to the target regions you specified in the **packer.json** file. - -4. Create a cluster profile that points to your custom image. - -5. Deploy a host cluster using your cluster profile that contains the custom image. - -This guide will teach you how to use KIB to create images for your infrastructure provider so that you can use the -custom images in a Palette cluster profile. - -### Prerequisites +## Prerequisites - Palette v3.4.0 or greater. @@ -56,20 +29,18 @@ custom images in a Palette cluster profile. - [HashiCorp Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) installed v1.8.6 or greater. -
- :::warning To use a commercial OS, you must provide the license before starting the image creation process. ::: -### Create an Image +## Create an Image -The following steps guide you through creating your image. You will create a custom Red Hat Enterprise Linux (RHEL) -image for Amazon Web Services (AWS). RHEL is a commercial product, so you will need license subscription credentials, -but you can use the same steps for a non-RHEL image. The critical point to take away in this guide is using KIB to -create the image. +The following steps guide you through creating your image. As an example, you will create a custom Red Hat Enterprise +Linux (RHEL) image for Amazon Web Services (AWS). RHEL is a commercial product, so you will need license subscription +credentials, but you can use the same steps for a non-RHEL image. The critical point to take away in this guide is using +KIB to create the image. 1. Clone the KIB repository. @@ -308,7 +279,7 @@ Palette's inability to launch a cluster. ::: -### Validate +## Validate Use the following steps to validate your custom image is working correctly. diff --git a/docs/docs-content/byoos/image-builder/image-builder.md b/docs/docs-content/byoos/image-builder/image-builder.md new file mode 100644 index 0000000000..da5be1837a --- /dev/null +++ b/docs/docs-content/byoos/image-builder/image-builder.md @@ -0,0 +1,49 @@ +--- +sidebar_label: "Create Images with Image Builder" +title: "Create Images with Image Builder" +description: "Learn how to use the Image Builder project to create images for Palette." +icon: "" +hide_table_of_contents: false +sidebar_position: 0 +tags: ["operating system", "byoos", "profiles", "cluster profiles"] +--- + +You can create and deploy custom images to most infrastructure providers using various tools. Many infrastructure +providers have tools that you can use to create custom images for the platform, such as +[AWS EC2 Image Builder](https://aws.amazon.com/image-builder/) for AWS or +[Azure VM Image Builder](https://azure.microsoft.com/en-us/products/image-builder) for Azure. You can also use platform +agnostic tools, such as [HashiCorp Packer](https://developer.hashicorp.com/packer), or something more tailored to +Kubernetes, such as the [Kubernetes Image Builder](https://image-builder.sigs.k8s.io/introduction.html) (KIB) project. + +## Kubernetes Image Builder + +KIB is a project designed to help users create images for various platforms. The project is a consolidation of multiple +tools that together work to create an artifact, or in simpler terms, a custom image. + +You can use the custom images created by KIB with Palette, assuming the infrastructure provider is supported by Palette. +Use the following diagram to understand how you can use KIB to create custom images that you can use with Palette. + +![A diagram displaying the steps for creating a custom image](/cluster-profiles_byoos_image-builder_workflow-diagram.webp) + +1. Download the KIB project and configure the image builder's **packer.json** file. + +2. Use the `make` command to create a custom image containing a specific Operating System (OS) version and flavor. + +3. The custom image is created and distributed to the target regions you specified in the **packer.json** file. + +4. Create a cluster profile that points to your custom image. + +5. Deploy a host cluster using your cluster profile that contains the custom image. + +## Get Started + +Refer to the generic [Build Image](./build-image.md) guide for instructions on how to build custom OS images. + +Additionally, check out the [Build Image for VMware vSphere](./build-image-vmware/build-image-vmware.md) page for +specific guides on how to build custom OS images for Kubernetes clusters that use VMware vSphere as the infrastructure +platform. + +## Resources + +- [Build Image](./build-image.md) +- [Build Image for VMware vSphere](./build-image-vmware/build-image-vmware.md) diff --git a/docs/docs-content/byoos/usecases/usecases.md b/docs/docs-content/byoos/usecases/usecases.md deleted file mode 100644 index 68855818fe..0000000000 --- a/docs/docs-content/byoos/usecases/usecases.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_label: "Use Cases" -title: "Use Cases" -description: "Learn how to build and use custom OS images with Palette." -hide_table_of_contents: false -sidebar_position: 10 -tags: ["operating system", "byoos", "profiles", "use cases"] ---- - -This section contains a collection of use cases for building and using custom OS images with Palette. Use these guides -to learn how to build custom OS images and use them to deploy Kubernetes clusters. If a specific use case is not covered -in this section, refer to the generic [Create Images with Image Builder](../image-builder.md) guide and use the -[Kubernetes Image Builder](https://image-builder.sigs.k8s.io/introduction.html) project to build your custom OS images. - -## Platforms - -- [VMware vSphere](./vmware/vmware.md) - -## Resources - -- [VMware vSphere](./vmware/vmware.md) - -- [Create Images with Image Builder](../image-builder.md) diff --git a/docs/docs-content/clusters/cluster-management/os-patching.md b/docs/docs-content/clusters/cluster-management/os-patching.md index bf90c8247e..b76957c769 100644 --- a/docs/docs-content/clusters/cluster-management/os-patching.md +++ b/docs/docs-content/clusters/cluster-management/os-patching.md @@ -20,13 +20,17 @@ cluster nodes. The following options are available for OS patching: -- Patch OS on boot -- Enable scheduled patching -- Patch OS on-demand +- [Patch OS on boot](#patch-os-on-boot) +- [Enable scheduled patching](#enable-scheduled-patching) +- [Patch OS on-demand](#perform-on-demand-patching) You can use a combination of these options to patch the operating system to the latest version. For example, you can patch OS on boot, set up scheduled patching every month, and also perform on-demand patches at any given point in time. +Palette offers the option to provide custom node drain configuration, which gives you fine-grained control of drain +behaviour during updates. Refer to the [Configure OS Patching Drain Policy](#configure-os-patching-drain-policy) for +further information. + ## Patch OS on Boot During the cluster creation, while configuring the cluster, you can select **Patch OS on boot**. In this case, the @@ -154,15 +158,15 @@ updates. - For EKS clusters, you can trigger OS updates from Palette. This would request AWS to update cluster node groups to the latest patch version. -### Prerequisite +### Prerequisites - An active cluster in Palette. -### Instructions +### Enablement 1. Log in to [Palette](https://console.spectrocloud.com). -2. From the left **Main Menu**, click **Cluster**. Select the cluster you want to patch to view cluster details. +2. From the left **Main Menu**, click **Clusters**. Select the cluster you want to patch to view cluster details. 3. In the upper-right corner, click on **Settings** and select **On-Demand Update**. This will trigger an OS update immediately if a newer version is available. @@ -180,3 +184,112 @@ updates. | ----------------------- | --------------------------------------- | | Last Applied Patch Time | The date and time of the last OS patch. | | Patched Version | The latest patched version. | + +## Configure OS Patching Drain Policy + +The node drain operation refers to the process of evicting all of your pods from a node before you perform node +maintenance. Typical node maintenance activities are hardware upgrades, kernel updates and OS patching. Palette provides +the ability to configure the drain policy during on-boot, scheduled, and on-demand OS patching. Users can specify a node +drain policy using a ConfigMap, which can be applied to deployed clusters using a cluster profile or through `kubectl`. + +### Limitations + +- This operation is not available for existing Kubernetes clusters that have been previously imported into Palette. +- This operation is not available for managed Kubernetes Services such as EKS and AKS. + - For EKS clusters, you can trigger OS updates from Palette. This would request AWS to update cluster node groups to + the latest patch version. + +### Prerequisites + +- An active cluster in Palette. + +### Enablement + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click **Profiles**. Then, click **Add Cluster Profile**. The cluster profile creation + wizard appears. + +3. Fill in a name in the **Name** field. Optionally, add a description in the **Description** field. Select the + **Add-on** box for the **Type**. Click **Next**. + +4. Click **Add Manifest**. The manifest editor appears. + +5. Add a name in the **Layer Name** field. Then, click **New manifest**. Assign a name to the internal manifest and + click on the blue button. An empty editor displays on the right side of the screen. + +6. Paste the snippet below into the empty editor. This snippet includes example values within a ConfigMap to demonstrate + how to control the drain policy of the cluster. The ConfigMap provides the following drain configuration parameters. + + | **Parameter** | **Description** | **Value Type** | **Default Value** | + | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------------- | + | `data.profiling` | Flag to indicate whether the profiling server should capture profiling data. If enabled, the port `8082` should be exposed to the profiling server. | `enable` / `disable` | `disable` | + | `data.feature.workloads` | Flag to indicate whether to push workload metadata to the Palette server. | `enable` /`disable` | `enable` | + | `data.drain.timeout` | The length of time, specified in nanoseconds, to wait for the drain operation to complete. There is no configured timeout if set to zero. | `duration` | `unset` | + | `data.drain.gracePeriod` | The period of time, specified in seconds, to wait for each pod to terminate gracefully. The value provided by the pods will be used if set to a negative value. | `int` | `-1` | + | `data.drain.deleteLocalData` | Flag to indicate whether to continue if one or more affected pods do not have specified volumes, resulting in the deletion of their local data. | `boolean` | `false` | + | `data.drain.ignoreDaemonSets` | Flag to indicate whether to ignore DaemonSet managed pods. | `boolean` | `false` | + | `data.drain.force` | Flag to indicate whether to continue if one or more affected pods do not have a declared controller. | `boolean` | `false` | + | `data.drain.disableEviction` | Flag to indicate whether to force drain to use delete operations. | `boolean` | `false` | + | `data.drain.skipWaitForDeleteTimeout` | The length of time, in seconds, to wait for pod deletion to complete. If the time elapses, the drain will continue. | `int` | `0` | + + ```yaml + apiVersion: v1 + kind: ConfigMap + metadata: + name: palette-agent-config + namespace: "cluster-{{ .spectro.system.cluster.uid }}" + data: + profiling: disable + feature.workloads: enable + drain: | + { + "timeout": 600000000, + "gracePeriod": 600, + "deleteLocalData": true, + "ignoreDaemonSets": true, + "force": true, + "disableEviction": false, + "skipWaitForDeleteTimeout": 600 + } + ``` + + :::info + + You can also specify the drain policy ConfigMap directly on the cluster by using `kubectl`. Download the + [Kubeconfig](./kubeconfig.md) file to connect to the cluster and issue the + `kubectl create configmap palette-agent-config --namespace ` command. Then, execute the command + `kubectl edit configmap palette-agent-config --namespace ` command and paste the configuration provided. + + ::: + +7. Click **Confirm & Create** to save the manifest. The manifest editor closes. + +8. Click **Next**. The summary of your Add-on cluster profile appears. Then, click **Finish Configuration** to complete + the cluster profile creation flow. The list of cluster profiles displays. + +9. From the left **Main Menu**, click **Clusters**. Select the cluster you want to patch to view cluster details. + +10. Select the **Profile** tab. Then, click `+` next to **Addon Layers**, then select the Add-on profile you created + previously. Click **Confirm**, then click **Save**. Wait for Palette to apply this manifest to your cluster. + +11. In the upper-right corner, click on **Settings** and select **On-Demand Update**. This will trigger an OS update + immediately if a newer version is available. + +### Validate + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. Click on the cluster you patched to view cluster details. + +3. Click on the **Nodes** tab of the cluster details page. You can find the current OS version and when the most recent + patch was applied. + + | **Field** | **Description** | + | ----------------------- | --------------------------------------- | + | Last Applied Patch Time | The date and time of the last OS patch. | + | Patched Version | The latest patched version. | + +4. Select the **Workloads** tab. The list of namespaces appears. Then, select the **Pods** tab. The list of deployed + pods and their details appears. The **Age** column of the pods shows that they were migrated, not restarted, during + cluster patching. diff --git a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md index 30c228576e..13856acbc2 100644 --- a/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md +++ b/docs/docs-content/clusters/edge/edge-configuration/installer-reference.md @@ -20,113 +20,34 @@ The `#cloud-config` value is a required cloud-init header required by the ::: -## Defaults +## Palette Agent Parameters -The Edge Installer is configured with a set of default values. +These parameters start with the prefix `stylus`. Palette agent parameters control various aspects of the Edge host's +configuration, including networking, logging, services, as well as users and permissions. Parameters in this section are +listed in alphabetical order. -| Parameter | Default | Description | -| --------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `paletteEndpoint` | `api.spectrocloud.com` | The Palette API endpoint. | -| `prefix` | `edge` | The prefix prepended to the edge device hostname to form the unique identifier. | -| `registrationURL` | `https://edge-registration-generic.vercel.app` | The URL that operators should use when registering the Edge host with Palette. | -| `disableAutoRegister` | `false` | Set to `true` if you want to disable auto registration. Refer to the [Register Edge Host](../site-deployment/site-installation/edge-host-registration.md) reference page to learn more about Edge host registrations. | +| Parameter | Description | Default | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| `stylus.debug` | Enable this parameter for debug output. Allowed values are `true` or `false`. | `False` | +| `stylus.disablePasswordUpdate` | Disables the ability to update Operating System (OS) user password from Local UI if set to true. Updating the password through the OS and API is still allowed. | `False` | +| `stylus.includeTui` | Enable Palette TUI for initial Edge host configuration. Default value is `false`. For more information, refer to [Initial Edge Host Configuration](../site-deployment/site-installation/initial-setup.md). | `false` | +| `stylus.installationMode` | Allowed values are `connected` and `airgap`. Default value is `connected`. `connected` means that the Edge host has a connection to Palette; `airgap` means it does not have a connection to Palette. | `connected` | +| `stylus.localUI.port` | Specifies the port that Local UI is exposed on. | 5080 | +| `stylus.site` | Review Site Parameters for more information. | | +| `stylus.registryCredentials` | Review [External Registry Parameters](#external-registry-parameters) for more information. | None | +| `stylus.trace` | Enable this parameter to display trace output. Allowed values are `true` or `false`. | `False` | -The default values assume you are installing the Edge host in an environment without a network proxy, do not require -remote access to the Edge host, and are using Palette SaaS. If you have requirements different from the default values, -you must provide the Edge Installer with additional information. - -You can provide the installer with additional configuration values in the user data configuration file. The following -table contains all the supported user data parameters the installer accepts. - -## Debug Parameters - -You can enable the `debug` and `trace` parameters when you need to troubleshoot Edge Installer issues. - -| Parameter | Description | -| --------------- | -------------------------------------------------------------------------------------------------------------- | -| `debug` | Enable this parameter for debug output. Allowed values are `true` or `false`. Default value is `false`. | -| `trace` | Enable this parameter to display trace output. Allowed values are `true` or `false`. Default value is `false`. | -| `imageOverride` | You can specify a different Edge Installer image versus the default image. | - -```yaml -#cloud-config -stylus: - debug: true - trace: true - imageOverride: "example.com/example-installer:v1.4.0" -``` - -## Install Mode - -You can specify the mode the Edge Installer should prepare the installation for. The Edge Installer supports two -different modes. - -- Connected: The site has internet connectivity and the installation is initiated through Palette. - -- Air-Gapped: The site does not have internet connectivity. The Installation is initiated through the Palette Edge CLI. - -| Parameter | Description | -| ------------------ | -------------------------------------------------------------------------- | -| `installationMode` | Allowed values are `connected` and `airgap`. Default value is `connected`. | - -```yaml -#cloud-config -stylus: - installationMode: "connected" -``` - -## Initial Configuration - -You can configure the Edge Installer to enable the initial configuration in the Palette Terminal User Interface (TUI) -when you boot up the Edge host for the first time. For more information about initial configuration, refer to -[Initial Edge Host Configuration](../site-deployment/site-installation/initial-setup.md). - -| Parameter | Description | -| ------------ | --------------------------------------------------------------------------------- | -| `includeTui` | Enable Palette TUI for initial Edge host configuration. Default value is `false`. | - -For example, the following configuration enables the Palette TUI. - -```yaml {3} -#cloud-config -stylus: - installationMode: airgap - includeTui: true - skipStylusUpgrade: true -``` - -## Local UI - -You can change the port that the Edge management console is exposed on. The default port is 5080. - -| Parameter | Description | Default Value | -| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -| `emcServer.port` | Specifies the port that Local UI is exposed on. | 5080 | -| `disablePasswordUpdate` | Disables the ability to update Operating System (OS) user password from Local UI if set to true. Updating the password through the OS and API is still allowed. | False | - -For example, the following configuration changes the default port for Local UI to 5081 and disables the ability to -update the OS user password from Local UI. - -```yaml -#cloud-config -stylus: - emcServer: - port: 5081 - disablePasswordUpdate: true -``` - -## External Registry +### External Registry Parameters You can point the Edge Installer to a non-default registry to load content from another source. Use the `registryCredentials` parameter object to specify the registry configurations. -| Parameter | Description | -| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `domain` | The domain of the registry. You can use an IP address plus the port or a domain name. | -| `username` | The username to authenticate with the registry. | -| `password` | The password to authenticate with the registry. | -| `insecure` | Whether to allow insecure connections to the registry. Default value is `false`. | -| `encodedPassword` | Specifies whether the password as given is base64 encoded.`true` means that the provided password is base64 encoded and that when using the password to authenticate, the password must be decoded first. `false` means the password is not encoded and must be used as is to authenticate with the registry. Default is `false`. | +| Parameter | Description | Default | +| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `stylus.registryCredentials.domain` | The domain of the registry. You can use an IP address plus the port or a domain name. | | +| `stylus.registryCredentials.encodedPassword` | Specifies whether the password as given is base64 encoded.`true` means that the provided password is base64 encoded and that when using the password to authenticate, the password must be decoded first. `false` means the password is not encoded and must be used as is to authenticate with the registry. | `False` | +| `stylus.registryCredentials.insecure` | Whether to allow insecure connections to the registry. | `False` | +| `stylus.registryCredentials.password` | The password to authenticate with the registry. | | ```yaml #cloud-config @@ -138,64 +59,40 @@ stylus: insecure: true ``` -## Site Parameters +### Site Parameters The `stylus.site` blocks accept the following parameters. -| Parameter | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `paletteEndpoint` | The URL endpoint that points to Palette. Example: `api.spectrocloud.com` | -| `edgeHostToken` | A token created at the tenant scope that is required for auto registration. | -| `projectUid` | The ID of the project the Edge host will belong to. | -| `projectName` | The name of the project. | -| `name` | Hostname of the Edge device. A hostname is composed of one label or a series of labels concatenated with dots. For example, `spectro-host` and `host.spectrocloud.com` are both valid host names. The entire hostname, including the delimiting dots, has a maximum of 253 ASCII characters. Each label may contain only the lower-case ASCII letters a through z, the digits 0 through 9, and the hyphen-minus character ('-'), and may contain no more than 63 characters. A hostname must start and end with alphanumeric characters. \ | -| `prefix` | A prefix prepended to the Edge device hostname to form the Edge device ID. Only alphanumeric characters and the hyphen-minus character are allowed. By default, this value is set to `edge`. | -| `network` | The network configuration settings. Review the [Site Network Parameters](#site-network-parameters) below for more details. | -| `registrationURL` | The URL that operators should use to register the Edge host with Palette. | -| `insecureSkipVerify` | This controls whether or not a client verifies the server's certificate chain and hostname. | -| `caCerts` | The Secure Sockets Layer (SSL) certificate authority (CA) certificates. | -| `clusterId` | The ID of the host cluster the edge host belongs to. | -| `clusterName` | The name of the host cluster the edge host belongs to. | -| `tags` | A parameter object you use to provide optional key-value pairs. Refer to the [Tags](#tags) section to learn more. | -| `tagsFromFile` | Specify tags from a file. Refer to the [Tags](#tags) section to learn more. | -| `tagsFromScript` | Use a script to generate the tags. Refer to the [Tags](#tags) section to learn more. | -| `deviceUIDPaths` | Specify the file path for reading in product or board serial that can be used to set the device ID. The default file path is **/sys/class/dmi/id/product_uuid**. Refer to the [Device ID (UID) Parameters](#device-id-uid-parameters) section to learn more. | +| Parameter | Description | Default | +| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | +| `stylus.site.caCerts` | The Secure Sockets Layer (SSL) certificate authority (CA) certificates. | | +| `stylus.site.clusterId` | The ID of the host cluster the edge host belongs to. | | +| `stylus.site.clusterName` | The name of the host cluster the edge host belongs to. | | +| `stylus.site.deviceUIDPaths` | Specify the file path for reading in product or board serial that can be used to set the device ID. The default file path is **/sys/class/dmi/id/product_uuid**. Refer to the [Device ID (UID) Parameters](#device-id-uid-parameters) section to learn more. | | +| `stylus.site.edgeHostToken` | A token created at the tenant scope that is required for auto registration. | | +| `stylus.site.insecureSkipVerify` | This controls whether or not a client verifies the server's certificate chain and hostname. | | +| `stylus.site.name` | Fully qualified domain name of the Edge host. | | +| `stylus.site.network` | The network configuration settings. Review the [Site Network Parameters](#site-network-parameters) below for more details. | | +| `stylus.site.paletteEndpoint` | The URL endpoint that points to Palette. Example: `api.spectrocloud.com` | | +| `stylus.site.prefix` | A prefix prepended to the Edge device hostname to form the Edge device ID. Only alphanumeric characters and the hyphen-minus character are allowed. By default, this value is set to `edge`. | | +| `stylus.site.projectName` | The name of the project. | | +| `stylus.site.projectUid` | The ID of the project the Edge host will belong to. | | +| `stylus.site.registrationURL` | The URL that operators should use to register the Edge host with Palette. | | +| `stylus.site.tags` | A parameter object you use to provide optional key-value pairs. Refer to the [Tags](#tags) section to learn more. | | +| `stylus.site.tagsFromFile` | Specify tags from a file. Refer to the [Tags](#tags) section to learn more. | | +| `stylus.site.tagsFromScript` | Use a script to generate the tags. Refer to the [Tags](#tags) section to learn more. | | :::info -If you do not specify a hostname for the edge device, the system will generate one from the serial number of the device. -If the Edge Installer cannot identify the serial number, it will generate a random ID instead. In cases where the -hardware does not have a serial number, we suggest that you specify a value so there is minimal chance of duplication. -Use the value `"$random"` to generate a random ID. You can also use the `DeviceUIDPaths` to read in a value from a -system file. +If you do not specify a hostname for the Edge host with `stylus.site.name` , the system will generate one from the +serial number of the device. If the Edge Installer cannot identify the serial number, it will generate a random ID +instead. In cases where the hardware does not have a serial number, we suggest that you specify a value so there is +minimal chance of duplication. Use the value `"$random"` to generate a random ID. You can also use the `DeviceUIDPaths` +to read in a value from a system file. ::: -## Site Network Parameters - -Use the site network parameters to configure network settings so the edge host can communicate with Palette. - -| Parameter | Description | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -| `siteNetwork.httpProxy` | The URL of the HTTP proxy endpoint. | -| `siteNetwork.httpsProxy` | The URL of the HTTPS proxy endpoint. | -| `siteNetwork.noProxy` | The list of IP addresses or CIDR ranges to exclude routing through the network proxy. | -| `siteNetwork.interfaces` | The network settings respective to the interfaces. Review the [Network Parameters](#network-parameters) table below for more details. | -| `siteNetwork.nameserver` | The IP address of the global DNS nameserver that requests should be routed to. | - -## Network Parameters - -Network settings specific to the network interface of the edge host. You can configure multiple interfaces. - -| Parameter | Description | -| ----------------------------- | -------------------------------------------------------------------------------------------------- | -| `networkInterface.ipAddress` | The assigned IP address to the network interface. | -| `networkInterface.mask` | The network mask for the assigned IP address. | -| `networkInterface.type` | Defines how the IP address is assigned. Allowed values are `dhcp` or `static`. Defaults to `dhcp`. | -| `networkInterface.gateway` | The network gateway IP address. | -| `networkInterface.nameserver` | The IP address of the DNS nameserver this interface should route requests to. | - -## Device ID (UID) Parameters +#### Device ID (UID) Parameters The device ID is generated by a specific priority sequence. The below table outlines the priority order from top to bottom when generating a UID for the Edge host. The UID generation starts with priority one, the device `name`, followed @@ -213,10 +110,10 @@ of the default path **/sys/class/dmi/id/product_uuid**, you can use the board Se **/sys/class/dmi/id/board_serial** by applying a `regex` parameter. Refer to the [regex syntax](https://github.com/google/re2/wiki/Syntax) reference guide to learn more. -| Parameter | Description | -| --------- | ------------------------------------------------ | -| `name` | The path of the file containing the UID. | -| `regex` | The regular expression pattern to match the UID. | +| Parameter | Description | +| ------------------------------------- | ------------------------------------------------ | +| `stylus.site.deviceUIDPaths[*].name` | The path of the file containing the UID. | +| `stylus.site.deviceUIDPaths[*].regex` | The regular expression pattern to match the UID. | You can use the `regex` parameter to remove unsupported characters from attributes to Refer to the warning box below for a list of unsupported characters. @@ -238,49 +135,45 @@ The length of the UID truncates to a maximum allowed length of 128 characters. T ::: -## Tags - -You can assign tags to the Edge host by specifying tags manually in the configuration file. The tags object accepts -key-value pairs. The following example shows how to assign tags manually to the Edge host. +#### Site Network Parameters -```yaml -#cloud-config -stylus: - site: - tags: - env: prod - department: engineering -``` - -You can also specify tags through alternative methods that are more dynamic, such as reading in tags from a file or from -a script that returns a JSON object. You can combine the various methods to provide tags to the Edge host. The following -sections describe the various methods you can use to provide tags dynamically to the Edge host. - -:::info - -The order of precedence for tags is as follows: - -1. Manually provided tags - `tags`. - -2. Tags from a script - `tagsFromScript`. - -3. Tags from a file - `tagsFromFile`. - -Tags from higher priority orders override tags from lower priority. For example, if you specify a tag manually and also -specify the same tag in a `tagsFromFile`, the tag from the `tag` object is what the Edge installer will use. - -::: +Use the site network parameters to configure network settings so the edge host can communicate with Palette. -## Tags From a File +| Parameter | Description | +| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | +| `stylus.site.network.httpProxy` | The URL of the HTTP proxy endpoint. | +| `stylus.site.network.httpsProxy` | The URL of the HTTPS proxy endpoint. | +| `stylus.site.network.noProxy` | The list of IP addresses or CIDR ranges to exclude routing through the network proxy. | +| `stylus.site.network.interfaces` | The network settings respective to the interfaces. This parameter accepts a list of objects with keys as follows in this table. | +| `stylus.site.network.interfaces.[NIC-NAME].ipAddress` | The assigned IP address to the network interface. | +| `stylus.site.network.interfaces.[NIC-NAME].mask` | The network mask for the assigned IP address. | +| `stylus.site.network.interfaces.[NIC-NAME].type` | Defines how the IP address is assigned. Allowed values are `dhcp` or `static`. Defaults to `dhcp`. | +| `stylus.site.network.interfaces.[NIC-NAME].gateway` | The network gateway IP address. | +| `stylus.site.network.interfaces.[NIC-NAME].nameserver` | The IP address of the DNS nameserver this interface should route requests to. | +| `stylus.site.network.nameserver` | The IP address of the global DNS nameserver that requests should be routed to. | + +#### Tags + +You can specify tags from a file by using the `tagsFromFile` parameter object or from a script by using the +`tagsFromScript` parameter. + +| Parameter | Description | Default Value | +| -------------------------------------- | ------------------------------------------------------ | ------------- | +| `stylus.site.tagFromFile.fileName` | The path to the file containing the tags. | `''` | +| `stylus.site.tagFromFile.delimiter` | The delimiter used to separate the key-value pairs. | `\n` | +| `stylus.site.tagFromFile.separator` | The separator used to separate the key from the value. | `:` | +| `stylus.site.tagFromScript.scriptName` | The path to the script that returns a JSON object. | `''` | +| `stylus.site.tagFromScript.timeout` | The timeout value in seconds. | `60` | + +With tags from a file, you can specify different delimiters and separators to parse the content of a file depending on +how the content is formatted. For example, assume the file **/etc/palette/tags.txt** contains the following content. -You can specify tags from a file by using the `tagsFromFile` parameter object. The `tagsFromFile` parameter object -accepts the following parameters. +```text hideClipboard +Location:Mumbai,India; Latitude:48.856614; Longitude:2.352221; owner:p78125d +``` -| Parameter | Description | Default Value | -| ----------- | ------------------------------------------------------ | ------------- | -| `fileName` | The path to the file containing the tags. | `''` | -| `delimiter` | The delimiter used to separate the key-value pairs. | `\n` | -| `separator` | The separator used to separate the key from the value. | `:` | +The following configuration can produce these tags: `Location: Mumbai,India`, `Latitude: 48.856614`, +`Longitude:2.352221`, `owner:p78125d`, `department: sales`. ```yaml #cloud-config @@ -294,17 +187,6 @@ stylus: separator: ":" ``` -Example: - -You can specify different delimiters and separators to parse the content depending on how the content is formatted. -Assume the file **/etc/palette/tags.txt** contains the following content. - -```text hideClipboard -Location:Mumbai,India; Latitude:48.856614; Longitude:2.352221; owner:p78125d -``` - -## Tags From a Script - You can specify tags from a script by using the `tagsFromScript` parameter object. The script must be executable and return a JSON object that contains the tags in the following format. @@ -314,7 +196,7 @@ return a JSON object that contains the tags in the following format. } ``` -Example: +For example, if you have a Python script that returns the following JSON output: ```json { @@ -323,20 +205,62 @@ Example: } ``` -The `tagsFromScript` parameter object accepts the following parameters. +You can configure `stylus.site.tagsFromScript` to point to the script, and it will add the tags `owner:p78125d` and +`department: sales` to the Edge host. -| Parameter | Description | Default Value | -| ------------ | -------------------------------------------------- | ------------- | -| `scriptName` | The path to the script that returns a JSON object. | `''` | -| `timeout` | The timeout value in seconds. | `60` | +## Install Parameters -```yaml -#cloud-config -stylus: - site: - tags: - department: "sales" - tagsFromScript: - scriptName: "/etc/palette/tags.py" - timeout: 60 -``` +The `install` block allows you to configure the installer to make bind mounts and disk partitions on the Edge host. In +addition, you can specify post-installation behavior, such as instructing the Edge host to power off automatically after +installation is complete. + +| Parameter | Description | Default | +| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `install.bind_mounts` | The list of folders to bind mount from the installer to the Edge host | None | +| `install.grub_options.extra_cmdline` | Kernel command-line parameters to add to the installer. | None | +| `install.partitions.persistent` | A persistent partition object. Providing this parameter creates an extra persistent partition on the Edge host. Accepts two parameters as follows in this table. | None | +| `install.partitions.persistent.size` | The size of the persistent partition | None | +| `install.partitions.persistent.fs` | The type of the file system for the persistent partition | None | +| `install.partitions.extra-partitions` | The list of extra partitions to create. Each list item accepts parameters as follows in this table. | None | +| `install.partitions.extra-partitions[*].name` | The name of the extra partition | None | +| `install.partitions.extra-partitions[*].size` | The size of the extra partition | None | +| `install.partitions.extra-partitions[*].fs` | The file system of the extra partition | None | +| `install.partitions.extra-partitions[*].label` | The label of the extra partition | None | +| `install.poweroff` | Whether to power off the Edge host after installation is complete. | `False` | +| `install.reboot` | Whether to reboot the Edge host after installation is complete | `False` | + +## Cloud Init Stages + +Cloud init stages allow you to automates the initialization of your Edge hosts during various stages of the system boot +process. You can perform For more information, refer to [Cloud-init Stages](./cloud-init.md). + +:::info + +You can configure users during any cloud-init stage. However, we strongly recommend that you use the `initramfs` stage +to configure users, because this is the earliest cloud-init stage. + +If you need to debug the Edge host in the event it is unable to progress past a certain stage, you will be able to +establish an SSH connection into the Edge host because the users are already there. On the other hand, if you configure +users at a later stage and your Edge host is not able to progress to that stage during installation, you will not be +able to access your Edge host because there are no users. + +::: + +| Parameter | Description | Default | +| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `stages.*.users` | The list of users to create at any cloud-init stage. Replace `*` with the specific stage. Each list item accepts parameters as follows in this table. | None | +| `stages.*.users[*].groups` | The list of groups that the user belongs to. Replace `*` with your username. | None | +| `stages.*.users[*].passwd` | The password of the user. Replace `*` with your username. | None | +| `stages.initramfs` | The `initramfs` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md). | None | +| `stages.rootfs` | The `rootfs` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.boot` | The `boot` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.fs` | The `fs` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.network` | The `network` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.reconcile` | The `reconcile` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.after-install` | The `after-install` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.after-install-chroot` | The `after-install-chroot` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.after-reset` | The `after-reset` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.after-reset-chroot` | The `after-reset-chroot` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.before-install` | The `before-install` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.before-upgrade` | The `before-upgrade` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | +| `stages.before-reset` | The `before-reset` stage during Edge host installation. For more information, refer to [Cloud Init Stages](./cloud-init.md) | None | diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md b/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md index 1449c22cbe..e2028c0c4b 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/edgeforge-workflow.md @@ -97,8 +97,8 @@ production scenario, you would need to customize these artifacts to suit your sp You can specify a custom registry for the Edge Installer to use during installation with the user data parameter `registryCredentials`. Refer to the -[Installer Configuration](../edge-configuration/installer-reference.md#external-registry) reference resource for more -details. +[Installer Configuration](../edge-configuration/installer-reference.md#external-registry-parameters) reference resource +for more details. ::: diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md index 71b0391b88..3c1e4c8820 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/build-installer-iso.md @@ -25,7 +25,7 @@ You can build the following content into the Edge installer ISO to customize you - User data. This is a YAML file that contains the configuration for the Edge Installer. For all available configuration options, refer to [Installer Configuration](../../edge-configuration/installer-reference.md). User data is required - for the installer ISO. + for the installer ISO. The build process validates the user data first before building the ISO. - If you do not include the user data file during the Edge Installer ISO build process, you must provide this configuration before the installation takes place with site user data. For more information, refer to [Apply Site User Data](../../site-deployment/site-installation/site-user-data.md). diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md index 71881da510..526974093d 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/palette-canvos/signed-content.md @@ -116,7 +116,7 @@ your Edge hosts come from a trusted source. For more information about content b When building the installer ISO, you must set the `installationMode` parameter to `airgap` in your Edge installer configuration user data. This ensures that your Edge host does not try to register itself with Palette, as this feature is not available to connected clusters. For more information, refer to - [Installer Reference](../../edge-configuration/installer-reference.md#install-mode). + [Installer Reference](../../edge-configuration/installer-reference.md#palette-agent-parameters). ::: diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md b/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md index c4b21bc425..40b1090588 100644 --- a/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/prepare-user-data.md @@ -8,25 +8,165 @@ tags: ["edge"] --- The Edge Installer supports using a custom configuration file in the format of a YAML file named **user-data** that you -can use to customize the installation. You can provide the customized configuration to the Edge Installer as a user data -file. For more information on how to provide the configuration to the Edge Installer, refer to -[Build Edge Installer ISO](./palette-canvos/build-installer-iso.md). Additionally, you can also provide the +can use to customize the installation. For more information on how to provide the configuration to the Edge Installer, +refer to [Build Edge Installer ISO](./palette-canvos/build-installer-iso.md). Additionally, you can also provide the configuration during site deployment as site-specific configuration. This can replace, supplement, or override your installer configuration you provide to the installer ISO. For more information, refer to [Apply Site User Data](../site-deployment/site-installation/site-user-data.md). -:::info - -Review the Edge [Install Configuration](../edge-configuration/installer-reference.md) resource to learn more about all -the supported configuration parameters you can use in the configuration user data. +This article guides you through several important configuration blocks in the **user-data** file. However, you can use +many additional parameters to further customize your installation. Review the Edge +[Install Configuration](../edge-configuration/installer-reference.md) resource to learn more about all the supported +configuration parameters you can use in the configuration user data. -::: +:::tip You can also use the Operating System (OS) pack to apply additional customization using cloud-init stages. Both the Edge Installer configuration file and the OS pack support the usage of cloud-init stages. Refer to the [Cloud-Init Stages](../edge-configuration/cloud-init.md) to learn more. -## User Data Samples +::: + +## Prerequisites + +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. + +## Prepare User Data + +1. Clone the **CanvOS** repository. + + ```shell + git clone https://github.com/spectrocloud/CanvOS.git + ``` + + From the **CanvOS** directory, copy the **user-data.template** file and name the copy **user-data**. This is a + template that you can use as a starting point to build your own user data file. + +### Configure Installation Mode + +2. Decide whether you want to deploy an Edge host that is connected to a Palette instance. The default configuration is + a connected Edge host. If you want to deploy an Edge host that is not connected to a Palette instance, you need to + change the installation mode to `airgap`. Add the `installationMode` parameter to under the `stylus` parameter. + + ```yaml + #cloud-init + stylus: + installationMode: airgap + ``` + + Edge hosts installed in airgap mode require you to provide assets needed to provision clusters. For more information + about the deployment lifecycle of airgap Edge hosts, refer to + [Edge Deployment Lifecycle](../edge-native-lifecycle.md). + +3. If you want to deploy the Edge host in `airgap` mode, skip this step. + + If you want to deploy the Edge host in connected mode, you need to provide the Palette endpoint, in addition to + either a registration token or QR code registration configuration. For more information about Edge host registration, + refer to [Edge Host Registration](../site-deployment/site-installation/edge-host-registration.md). For example, the + following configuration provides the default Palette endpoint, a registration token, an a project name. + + ```yaml + #cloud-config + stylus: + site: + # The Palette API endpoint to use. The default value is api.spectrocloud.com. + paletteEndpoint: api.spectrocloud.com + + # The edgeHostToken is an auto-registration token to register the Edge host with Palette upon bootup. + # This token can be generated by navigating to the Tenant Settings -> Registration Token. + # Specify a name and select the project id with which the Edge host should register itself. + edgeHostToken: aUAxxxxxxxxx0ChYCrO + + # The Palette project ID the Edge host should pair with. This is an optional field if an edgeHostToken is used and the token was assigned to a project. + projectUid: 12345677788 + ``` + +### Configure Cloud Init Stages (Optional) + +4. Cloud-init stages allow you to configure your Edge host declaratively. For more information about cloud-init stages, + refer to [Cloud-init Stages](../edge-configuration/cloud-init.md). + + To configure clout-init stages for your Edge host, use the `stages` block. For example, the following configuration + installs Amazon Systems Manager agent on your Edge host during the `after-install-chroot` stage. + + ```yaml + #cloud-init + stages: + after-install-chroot: + - name: "Install SSM" + commands: + - snap install amazon-ssm-agent --classic + ``` + +### Configure Users + +5. If you would like to have SSH access to your Edge host, you must configure Operating System (OS) users on your Edge + host. You can do this using the `stages.initramfs.users` block. Replace `USERNAME` with the name of your user and + replace the value of the password with your password. You can also add the user to user groups, or add SSH keys to + the list of authorized keys for that user. + + ```yaml + #cloud-init + stages: + initramfs: + - users: + USERNAME: + passwd: ****** + groups: + - sudo + ssh_authorized_keys: + - ssh-rsa AAAAB3N… + ``` + +### Configure Proxy Settings (Optional) + +6. Optionally, you can configure HTTP/HTTPS proxy settings for your Edge host. This instructs the Edge host OS as well + as the Palette agent to use the proxy server for outbound communications. Use the parameters from the table below to + configure proxy settings for your Edge host. + + | Parameter | Description | + | ------------------------ | ------------------------------------------------------------------------------------- | + | `siteNetwork.httpProxy` | The URL of the HTTP proxy endpoint. | + | `siteNetwork.httpsProxy` | The URL of the HTTPS proxy endpoint. | + | `siteNetwork.noProxy` | The list of IP addresses or CIDR ranges to exclude routing through the network proxy. | + +### Configure Post-Installation Behavior (Optional) + +7. You can use some parameters of the `install` block to configure what you'd like the Edge host to do after + installation is complete. The default behavior for the Edge host is to stay on the "Installation Complete" screen, + but you can configure it to power off or restart automatically. For example, the following configuration instructs + the Edge host to power off automatically post-installation. + + ```yaml + #cloud-init + install: + poweroff: true + ``` + + :::warning + + If your want your Edge host to restart automatically, ensure that you remove the installation disk after the + installation is complete and before the restart happens. Otherwise, the Edge host might start the installation + process again. + + ::: + +## Validate + +You can use the `+validate-user-data` build target of EdgeForge to validate that your user data follows the expected +schema. You need to perform this action on an AMD64 (also known as x86_64) machine. + +From the **CanvOS** directory, issue the following command to validate your user data. + +```shell +sudo ./earthly.sh +validate-user-data +``` + +```hideClipboard ++validate-user-data | time=*2024-07-25T20:19:172* level=info msg="Validation successful" +``` + +## Full User Data Samples You may encounter the following scenarios when creating an Edge Installer configuration user data file. Use these examples as a starting point to help you create user data configurations that fit your needs. diff --git a/docs/docs-content/clusters/edge/edgeforge-workflow/validate-user-data.md b/docs/docs-content/clusters/edge/edgeforge-workflow/validate-user-data.md new file mode 100644 index 0000000000..2bd17890da --- /dev/null +++ b/docs/docs-content/clusters/edge/edgeforge-workflow/validate-user-data.md @@ -0,0 +1,91 @@ +--- +sidebar_label: "Validate User Data" +title: "Validate User Data" +description: "Learn how to validate your user data." +hide_table_of_contents: false +sidebar_position: 5 +tags: ["edge"] +--- + +After preparing or modifying your **user-data** file, you can validate your user data before using it to build the Edge +installer ISO. This allows you to be confident that your user data follows the expected schema and avoid having to +rebuild Edge artifacts due to user data errors. The following issues will be flagged through validation: + +- YAML formatting issues. +- Omission of the `#cloud-config` header. +- Missing required fields or fields containing incorrect data types. + +This guide provides instructions on how to validate the user data manually without triggering an actual build. However, +this process is also executed automatically when you build the Edge installer ISO. + +## Prerequisites + +- A physical or virtual Linux machine with AMD64 (also known as x86_64) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```shell + uname -m + ``` + +- You have cloned the [**CanvOS** repository](https://github.com/spectrocloud/CanvOS.git). + +- You have a file named **user-data** in your **CanvOS** directory. For more information on how to prepare the user-data + file, refer to [Prepare User Data](./prepare-user-data.md). + +## Validate User Data + + + + + +From the **CanvOS** directory, issue the following command. + +```shell +sudo ./earthly.sh +validate-user-data +``` + + + + + +From the directory where the Palette Edge CLI executable is present, issue the following command. Replace +`` with the path to your user-data file. Refer to [Downloads](../../../spectro-downloads.md) to +download the Palette Edge CLI. + +```shell +./palette-edge-cli validate --user-data-file-path +``` + + + + + +If the output is similar to the following, it means that the user data is valid and will be applied to the Edge host. + +:::warning + +This only checks that the user data conforms to the expected schema and will not catch issues with the data itself. For +example, if your user data contained an expired registration token, this will not be flagged by the validation script. + +::: + +```hideClipboard ++validate-user-data | time=*2024-07-25T20:19:172* level=info msg="Validation successful" +``` + +If the data does not pass the validation, the output will display the encountered error. For example, if the +`stylus.registryCredentials.password` field is present but no value is provided, the following error will be displayed +in the output. + +``` +Error: invalid JSON: stylus.registryCredentials.password: Invalid type. Expected: string, given: null +``` + +## Validate + +1. Build an Edge installer ISO with the user data and install an Edge host. For more information, refer to + [Build Installer ISO](./palette-canvos/build-installer-iso.md). + +2. Confirm that the user data you provided has been applied. For example, if you configured users in your user data and + you were able to use the credentials to establish an SSH connection to your Edge host, then you can confirm that the + user data has been applied. diff --git a/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md b/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md index c4d4832c72..ae7db5fbfb 100644 --- a/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md +++ b/docs/docs-content/clusters/edge/local-ui/cluster-management/create-cluster.md @@ -88,7 +88,8 @@ cluster using Local UI. For more information about node pool configurations, refer to [Node pools](../../../cluster-management/node-pool.md). After you finish configuration, click **Next**. -9. Review your configurations and deploy the cluster. +9. Review your configurations and deploy the cluster. As your cluster begins to deploy, the status and details of the + deployment are displayed in the **Cluster** page. Use this page to track the deployment progress. ## Validate diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md b/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md index a9f5cb517f..d5fd5ee94f 100644 --- a/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md +++ b/docs/docs-content/clusters/edge/local-ui/host-management/access-console.md @@ -85,7 +85,7 @@ You can change the password of an OS user through Local UI, through the terminal - Through Local UI: The `stylus.disablePasswordUpdate` parameter is set to `false` in the installer configuration user data. The default value of the parameter is `false`. For more information, refer to - [Installer Reference](../../edge-configuration/installer-reference.md#local-ui). + [Installer Reference](../../edge-configuration/installer-reference.md#site-parameters). diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/audit-logs.md b/docs/docs-content/clusters/edge/local-ui/host-management/audit-logs.md new file mode 100644 index 0000000000..09a2c5930c --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/audit-logs.md @@ -0,0 +1,164 @@ +--- +sidebar_label: "Configure and Access Audit Logs" +title: "Configure and Access Audit Logs" +description: "Instructions for configuring applications to write to the audit log file and how to download the files. " +hide_table_of_contents: false +sidebar_position: 110 +tags: ["edge"] +--- + +On any operational Edge host, many services write events, logs, and any other applicable audit logs to the +`/var/log/stylus-audit.log` file. If you have application workloads on your cluster, you can also configure them to +write audit logs to the same file. This allows you to keep all audit logs in a single location for easy management and +retrieval. Audit logs written to the `/var/log/stylus-audit.log` file can be downloaded from Local UI. + +## Configure Audit Logs to be Written to File + +You can configure your own application to write log entries to the `/var/log/stylus-audit.log` file by setting up the +applications to write to `syslog` and configure your `syslog` daemon to direct the logs to the file. The exact steps to +do this vary by application, but the log entries must conform to the expected schema. In addition, you can also direct +Palette agent's logs to another file if you want to collect the logs in a different file. + +By default, you can view one year's worth of audit logs in Local UI. Log files past the one year mark will be rotated +out and archived. You can still download your log files from any period, but they will not be viewable in Local UI. + +### Limitations + +- This feature is only available to airgapped Edge hosts without a connection to Palette. + +### Prerequisites + +- You must have configured your application to write logs to `syslog` with a given facility and severity level. We + recommend setting the facility as `local7` and severity as `notice`. We also recommend that you add a tag to your + application logs to distinguish it from other logs. + +- The audit entries logged to `syslog` must be in the RFC 5424 Syslog protocol, with the message in JSON format. The + JSON object must contain the following keys: `edgeHostId`, `contentMsg`, `action`, `actor`, `actorType`, `resourceId`, + `resourceName`, `resourceKind`. For more information about the Syslog protocol, refer to + [RFC 5424 - The Syslog Protocol](https://datatracker.ietf.org/doc/html/rfc5424). + +- This how-to is based on the EdgeForge process. We recommend that you familiarize yourself with + [EdgeForge](../../edgeforge-workflow/edgeforge-workflow.md) and the process to build Edge artifacts. + +- A physical or virtual Linux machine with _AMD64_ (also known as _x86_64_) processor architecture to build the Edge + artifacts. You can issue the following command in the terminal to check your processor architecture. + + ```bash + uname -m + ``` + +- Minimum hardware configuration of the Linux machine: + + - 4 CPU + - 8 GB memory + - 150 GB storage + +- [Git](https://git-scm.com/downloads). You can ensure git installation by issuing the `git --version` command. + +### Procedure + +1. Clone the CanvOS repository and change into the directory. + + ```shell + git clone https://github.com/spectrocloud/CanvOS.git + ``` + +2. Create a file at the path `overlay/files/etc/rsyslog.d/48-audit.conf`. You can change the file name, but it must be a + `conf` file and sorted alphanumerically before `49-stylus-audit.conf`. For example, `30-my-log.conf`. + + + + + +3. Populate the file with the following configuration. Replace `your-tag` with the tag you configured for the logs of + your own application. If you changed the facility or the severity level from the suggested values, replace them with + your actual values. + + ```conf + $PrivDropToUser root + $PrivDropToGroup root + $Umask 0000 + $template ForwardFormat,"<%pri%>1 %timestamp:::date-rfc3339% %HOSTNAME% %syslogtag% %procid% - - %msg%\n" + if ($syslogfacility-text == 'local7' and $syslogseverity-text == 'notice' and $syslogtag contains '') then { + action( + type="omfile" + file="/var/log/stylus-audit.log" + FileCreateMode="0600" + fileowner="root" + template="ForwardFormat" + ) + } + ``` + + Ensure your logs follow the RFC 5424 Syslog protocol, with the message in JSON format. The JSON object must contain + the following keys: `edgeHostId`, `contentMsg`, `action`, `actor`, `actorType`, `resourceId`, `resourceName`, + `resourceKind`. If your log entries do not follow the RFE 5424 Syslog protocol, or do not contain the necessary keys, + they will still be logged, but will not show up in Local UI. + + + + + +3. Populate the file with the following configuration. Replace `your-file` with the name of your log file. + + ```conf + $PrivDropToUser root + $PrivDropToGroup root + $Umask 0000 + $template ForwardFormat,"<%pri%>1 %timestamp:::date-rfc3339% %HOSTNAME% %syslogtag% %procid% - - %msg%\n" + if ($syslogfacility-text == 'local7' and $syslogseverity-text == 'notice' and $syslogtag contains 'stylus-audit') then { + action( + type="omfile" + // highlight-next-line + file="" + FileCreateMode="0600" + fileowner="root" + template="ForwardFormat" + ) + } + ``` + + This makes sure that the Palette agent logs are sent both to the file you configured and to the default + `stylus-audit.log` file. + + + + + +4. Follow the [Build Edge Installer ISO](../../edgeforge-workflow/palette-canvos/build-installer-iso.md) guide to build + an Edge installer ISO and install an Edge host. Then follow the relevant guides in + [Deployment](../../site-deployment/site-deployment.md) to deploy a cluster with your application workloads. + +### Validate + +1. Log in to Local UI. For more information, refer to [Access Local UI Console](access-console.md). + +2. In the left **Main Menu**, click **Audit Log**. Confirm that the logs from your applications are being collected. + +## View and Download Log File from Local UI + +Log files are stored in the `/var/log/` folder. The active log file `stylus-audit.log` stores up to one year's worth of +logs. After a year, or when the file size reaches 100 MB, the log file is rotated out and archived. If the log messages +are configured to be picked up by Local UI, they will show up in Local UI. + +You can also download log files less than three years old in the `/var/log/` file from Local UI. This includes the log +entries that were not configured to be displayed in Local UI. + +### Prerequisites + +- An active Edge host installed in the `airgap` mode. + +### Procedure + +1. Log in to Local UI. For more information, refer to [Access Local UI Console](access-console.md). + +2. In the left **Main Menu**, click **Diagnostics**. Then click the **Logs** tab. You can view all audit log entries on + this page. Local UI will display log entries dated up to one year ago. + +3. To download the log files, click the **Download** button in the upper-right corner. This will download all files in + the `/var/log` folder, including the archived log files as well as any additional log files you configured to be + stored in the directory. + +### Validate + +1. Open the downloaded file. Confirm that the logs are included in the file. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/download-files.md b/docs/docs-content/clusters/edge/local-ui/host-management/download-files.md new file mode 100644 index 0000000000..5fa7c8b379 --- /dev/null +++ b/docs/docs-content/clusters/edge/local-ui/host-management/download-files.md @@ -0,0 +1,42 @@ +--- +sidebar_label: "Download Files from Local UI" +title: "Download Files from Local UI" +description: "Instructions for downloading files from Local UI." +hide_table_of_contents: false +sidebar_position: 130 +tags: ["edge"] +--- + +Palette Edge provides you with a fixed path where you can configure your applications to write files. These files can +then be downloaded from Local UI. + +This is particularly useful if you want to access core dump files of your applications in the event of a crash. For +example, if you have configured your applications to direct core dumps to the folder `/var/log/files` in the event of a +crash, you can download the core dump files from Local UI for diagnostic purposes. You can also write any type of file +to this directory; it is not limited to core dump files. + +## Prerequisites + +- You have configured your applications to write files to `/var/log/files`. The steps to do this vary by application, + but the path must be exactly `/var/log/files`. This is the only path where files can be downloaded from Local UI. + +- An operational Edge host installed in the `airgap` mode. For more information, refer to + [Installer Reference](../../edge-configuration/installer-reference.md). + +- Network access to your Edge host's Local UI port. The default port is `5080`. + +## Enablement + +1. Log in to Local UI. For more information, refer to [Access Local UI Console](./access-console.md). + +2. From the left **Main Menu**, click **Diagnostics**. + +3. Click on the **Files** tab. + +4. Check the files you would like to download. + +5. Click the **Download** button in the upper-right corner. + +## Validate + +View the files you downloaded in your downloads folder. Confirm that they are the files written by your application. diff --git a/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md b/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md index af903b21af..caee9bc821 100644 --- a/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md +++ b/docs/docs-content/clusters/edge/local-ui/host-management/host-management.md @@ -23,4 +23,10 @@ Refer to the following resources to learn how to configure your Edge host using - [Configure HTTP Proxy](./configure-proxy.md) +- [Add Custom Links](./custom-link.md) + +- [Diagnostic Tools](./diagnostic-tools.md) + +- [Configure and Download Audit Logs](./audit-logs.md) + - [Customize Local UI Theme](./theming.md) diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md index 54da5d66e5..f1d34cad87 100644 --- a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-external-registry.md @@ -101,8 +101,8 @@ information, refer to [Enable Local Harbor Registry](./local-registry.md). insecure: true ``` - Refer to [Installer Configuration](../../edge-configuration/installer-reference.md#external-registry) for a - description of each field. + Refer to [Installer Configuration](../../edge-configuration/installer-reference.md#external-registry-parameters) for + a description of each field. 4. Follow the rest of the [Build Edge Artifact](../../edgeforge-workflow/palette-canvos/palette-canvos.md) guide and build the Installer ISO with the user data containing the registry credentials. diff --git a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md index 06a0764a19..f0026028e1 100644 --- a/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md +++ b/docs/docs-content/clusters/edge/site-deployment/deploy-custom-registries/deploy-private-registry.md @@ -79,7 +79,7 @@ to use a private registry for images other the provider images, refer to If you have specified registry credentials in the `registryCredentials` field in the user data file during the EdgeForge process, the credentials provided in the cluster profile will be ignored. For more information, refer to [EdgeForge - Build Artifacts](../../edgeforge-workflow/palette-canvos/palette-canvos.md) and - [Installer Configuration](../../edge-configuration/installer-reference.md#external-registry). + [Installer Configuration](../../edge-configuration/installer-reference.md#external-registry-parameters). ::: diff --git a/docs/docs-content/clusters/edge/site-deployment/site-installation/initial-setup.md b/docs/docs-content/clusters/edge/site-deployment/site-installation/initial-setup.md index 51d3be641e..a75d79660f 100644 --- a/docs/docs-content/clusters/edge/site-deployment/site-installation/initial-setup.md +++ b/docs/docs-content/clusters/edge/site-deployment/site-installation/initial-setup.md @@ -30,7 +30,7 @@ perform the setup, you can issue the command `palette-tui` in the terminal to tr - The Edge host must not have an active cluster deployed on it. - The Edge installer ISO used to install Palette on the Edge host must - [enable initial configuration](../../edge-configuration/installer-reference.md#initial-configuration). + [enable initial configuration](../../edge-configuration/installer-reference.md#palette-agent-parameters). - A keyboard or another input device connected to the Edge host. diff --git a/docs/docs-content/clusters/public-cloud/azure/required-permissions.md b/docs/docs-content/clusters/public-cloud/azure/required-permissions.md index b37542e1c1..91c8762c61 100644 --- a/docs/docs-content/clusters/public-cloud/azure/required-permissions.md +++ b/docs/docs-content/clusters/public-cloud/azure/required-permissions.md @@ -33,7 +33,7 @@ We support the following use cases: :::tip -You can use the [Validator](https://github.com/spectrocloud-labs/validator) with the +You can use [Validator](https://github.com/spectrocloud-labs/validator) with the [Azure plugin](https://github.com/spectrocloud-labs/validator-plugin-azure) to verify you have setup the correct permissions. The Validator Azure plugin requires the following permissions: @@ -41,8 +41,8 @@ permissions. The Validator Azure plugin requires the following permissions: - Microsoft.Authorization/roleAssignments/read - Microsoft.Authorization/roleDefinitions/read -You can use the Validator with the Palette CLI. Check out the Palette CLI -[Validator](../../../automation/palette-cli/commands/validator.md) command reference page for more information. +You can use Validator with the Palette CLI. Check out the Palette CLI +[Validator](../../../automation/palette-cli/commands/ec.md#validate-environment) reference page for more information. ::: diff --git a/docs/docs-content/component.md b/docs/docs-content/component.md index 08bd839ac4..b1e813f237 100644 --- a/docs/docs-content/component.md +++ b/docs/docs-content/component.md @@ -16,6 +16,8 @@ This page lists the version details of various Palette components and their resp | Palette Release | Recommended CLI Version | | --------------- | ----------------------- | +| Release 4.4.14 | v4.4.6 | +| Release 4.4.12 | v4.4.6 | | Release 4.4.11 | v4.4.5 | | Release 4.4.4 | v4.4.0 | | Release 4.3.x | v4.3.4 | @@ -29,6 +31,8 @@ This page lists the version details of various Palette components and their resp | Palette Release | CLI Version | | --------------- | ----------- | +| Release 4.4.14 | v4.4.8 | +| Release 4.4.12 | v4.4.6 | | Release 4.4.11 | v4.4.4 | | Release 4.4.2 | v4.4.4 | | Release 4.3.x | v4.3.2 | diff --git a/docs/docs-content/enterprise-version/system-management/ssl-certificate-management.md b/docs/docs-content/enterprise-version/system-management/ssl-certificate-management.md index 019cac1a42..7657c8e16a 100644 --- a/docs/docs-content/enterprise-version/system-management/ssl-certificate-management.md +++ b/docs/docs-content/enterprise-version/system-management/ssl-certificate-management.md @@ -1,7 +1,7 @@ --- -sidebar_label: "SSL Certificate Management" -title: "SSL Certificate" -description: "Upload and manage SSL certificates in Palette." +sidebar_label: "System Address Management" +title: "System Address Management" +description: "Manage system address and SSL certificates in Palette." icon: "" hide_table_of_contents: false sidebar_position: 70 @@ -13,16 +13,30 @@ Palette uses Secure Sockets Layer (SSL) certificates to secure internal and exte Transfer Protocol Secure (HTTPS). External Palette endpoints, such as the [system console](../system-management/system-management.md#system-console), [Palette dashboard](../../getting-started/dashboard.md), Palette API, and gRPC endpoints, are enabled by default with -HTTPS using an auto-generated self-signed certificate. You can replace the self-signed certificate with a custom SSL -certificate to secure these endpoints. +HTTPS using an auto-generated self-signed certificate. + +## Update System Address and Certificates + +The Palette system console allows you to replace the self-signed certificate with a custom SSL certificate to secure +these endpoints. Additionally, you can update the system address, which is the Fully Qualified Domain Name (FQDN) that +you use to access your Palette installation. The system address and certificates may be updated simultaneously. :::info -You can swap out the external endpoint certificate at any time without affecting the system functionality. +Palette validates the combination of system address, certificate, key, and Certificate Authority (CA). Ensure that the +certificate is not expired, as well as that it is valid for the CA and the system address. Additionally, the system +address must be accessible from the system console. + +::: + +:::warning + +You can swap out the external endpoint certificate at any time without affecting the system functionality. However, +updating the system address may require manual reconciliation on deployed clusters. ::: -## Prerequisites +### Prerequisites - Access to the Palette system console. @@ -31,41 +45,106 @@ You can swap out the external endpoint certificate at any time without affecting - Ensure the certificate is created for the custom domain name you specified for your Palette installation. If you did not specify a custom domain name, the certificate must be created for the Palette system console's IP address. You can - also specify a load balancer's IP address if you are using a load balancer to access Palette . + also specify a load balancer's IP address if you are using a load balancer to access Palette. -## Enablement +### Enablement -You can upload an SSL certificate in Palette by using the following steps. +You can update your Palette system address and SSL certificates by using the following steps. 1. Log in to the Palette system console. 2. Navigate to the left **Main Menu** and select **Administration**. -3. Select the tab titled **Certificates**. +3. Select the **System Address** tab. + +4. Update your Palette domain in the **System Address (UI and API)** field. + +5. Copy and paste the certificate into the **Certificate** field. -4. Copy and paste the certificate into the **Certificate** field. +6. Copy and paste the certificate key into the **Key** field. -5. Copy and paste the certificate key into the **Key** field. +7. Copy and paste the certificate authority into the **Certificate Authority** field. -6. Copy and paste the certificate authority into the **Certificate authority** field. + ![A view of the certificate upload screen](/palette_system-management_ssl-certificate-management_system-address.webp) - ![A view of the certificate upload screen](/palette_system-management_ssl-certifiacte-management_certificate-upload.webp) +8. Click **Update** to save your changes. -7. Save your changes. +9. If you have any clusters deployed, you may need to reconcile the updated system address for each cluster. Refer to + [Reconcile System Address on Deployed Clusters](#reconcile-system-address-on-deployed-clusters) for more information. -If the certificate is invalid, you will receive an error message. Once the certificate is uploaded successfully, Palette -will refresh its listening ports and start using the new certificate. +You will receive an error message if the provided values are not valid. Once the certificate is uploaded successfully, +Palette will refresh its listening ports and start using the newly configured values. -## Validate +### Validate You can validate that your certificate is uploaded correctly by using the following steps. -1. Log out of the Palette system console. If you are already logged in, log out and close your browser session. Browsers - cache connections and may not use the newly enabled HTTPS connection. Closing your existing browser session avoids - issues related to your browser caching an HTTP connection. +1. Log out of the Palette system console. If you are already logged in, log out and close your browser session. + Browsers cache connections and may not use the newly enabled HTTPS connection. Closing your existing browser session + avoids issues related to your browser caching an HTTP connection. -2. Log back into the Palette system console. Ensure the connection is secure by checking the URL. The URL should start - with `https://`. +2. Log back into the Palette system console. Ensure the connection is secure by checking the URL. The URL should start + with `https://`. Palette is now using your uploaded certificate to create a secure HTTPS connection with external clients. Users can now securely access the system console, Palette dashboard, the gRPC endpoint, and the Palette API endpoint. + +## Reconcile System Address on Deployed Clusters + +Once you have updated your system address, the clusters that were deployed before the update will not be able to +automatically reconnect to Palette if the old system address is no longer available. You will need to manually update +the API endpoint on each cluster if this is the case. This enables the Palette agent to reconnect to the API at the +newly configured system address. + +### Prerequisites + +- Palette access with a configured cloud account. + +- A cluster deployed prior to the system address update. Refer to the [Clusters](../../clusters/clusters.md) section for + further guidance. + +- `kubectl` installed. Use the Kubernetes [Install Tools](https://kubernetes.io/docs/tasks/tools/) page for further + guidance. + +### Enablement + +1. Log into Palette using the configured system address. + +2. Navigate to the left **Main Menu** and select **Clusters**. Palette displays your deployed clusters. The clusters + that have the **Unknown** status need to be manually updated. + +3. Select your cluster from the **Clusters** list. The cluster **Overview** tab displays. + +4. Download the kubeconfig file. This file allows you to connect to your deployed cluster. Check out the + [Kubeconfig](../../clusters/cluster-management/kubeconfig.md) page to learn more. +5. Open a terminal window and set the environment variable `KUBECONFIG` to point to the file you downloaded. + + ```shell + export KUBECONFIG= + ``` + +6. Execute the following command in your terminal to view the cluster namespaces. Make a note of the cluster namespace + that Palette has created. Its name follows the pattern **cluster-id**. + + ```shell + kubectl get namespaces + ``` + +7. Palette uses ConfigMaps to save its configuration and environment variables. Update the `apiEndpoint` value in the + `hubble-info` ConfigMap to use the newly configured system address. + + ```shell + kubectl edit configmap hubble-info --namespace + ``` + +8. Save your changes and exit the editor. + +Repeat these steps for each cluster that has the **Unknown** status. + +### Validate + +1. Log into Palette using the configured system address. + +2. Navigate to the left **Main Menu** and select **Clusters**. + +3. Palette successfully displays the status of your clusters. None of your clusters has the **Unknown** status. diff --git a/docs/docs-content/enterprise-version/upgrade/upgrade.md b/docs/docs-content/enterprise-version/upgrade/upgrade.md index 8b51e77e11..70ee782cb0 100644 --- a/docs/docs-content/enterprise-version/upgrade/upgrade.md +++ b/docs/docs-content/enterprise-version/upgrade/upgrade.md @@ -32,6 +32,9 @@ Before upgrading Palette to a new major version, you must first update it to the | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | | 4.4.6 | 4.4.11 | :white_check_mark: | | 4.3.6 | 4.4.11 | :white_check_mark: | | 4.3.6 | 4.4.4 | :white_check_mark: | diff --git a/docs/docs-content/integrations/verified_packs.md b/docs/docs-content/integrations/verified_packs.md index 0047773c35..3be77ce6b7 100644 --- a/docs/docs-content/integrations/verified_packs.md +++ b/docs/docs-content/integrations/verified_packs.md @@ -53,16 +53,18 @@ Use the following steps to create a cluster profile by adding one or more layers 5. Select the cluster profile type that you want to create. You can read more about cluster profile types on the [Cluster Profiles](../profiles/cluster-profiles/cluster-profiles.md) page. Click on **Next** to continue. -6. Select **Add New Pack**. In the next window that displays, select the pack with the verified badge that you want to - add to your profile. You can search packs by name. +6. Select **Add New Pack**. -![A screenshot of selecting Palette Registry](/integrations_verified-packs_add-pack.webp) +7. Toggle the **Verified** checkbox to display all verified packs. Select the pack you want to add to the cluster + profile. -7. Fill out the required input fields and click on **Confirm & Create**. + ![A screenshot of selecting Palette Registry](/integrations_verified-packs_add-pack.webp) -8. If you want to add additional layers, repeat steps 6 and 7. Otherwise, click on **Next** to review the profile. +8. Fill out the required input fields and click on **Confirm & Create**. -9. Click on **Finish Configuration** to create the cluster profile. +9. If you want to add additional layers, repeat steps 6 - 8. Otherwise, click on **Next** to review the profile. + +10. Click on **Finish Configuration** to create the cluster profile. You now have an add-on cluster profile that contains one or more verified packs. diff --git a/docs/docs-content/legal-licenses/oss-licenses.md b/docs/docs-content/legal-licenses/oss-licenses.md index 3b66b8ec70..3419b6f761 100644 --- a/docs/docs-content/legal-licenses/oss-licenses.md +++ b/docs/docs-content/legal-licenses/oss-licenses.md @@ -9,546 +9,746 @@ tags: ["legal", "licenses"] The following table lists the open-source licenses tied to the libraries and modules currently in use by Palette. If you -have any questions or concerns, contact us at support@spectrocloud.com +have any questions or concerns, contact us at support@spectrocloud.com. -| **Library** | **License** | -| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -| atomicgo.dev/cursor | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/keyboard | [MIT](https://opensource.org/license/mit/) | -| atomicgo.dev/schedule | [MIT](https://opensource.org/license/mit/) | -| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| cloud.google.com/go/container | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| cloud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) | -| github.com/amoghe/go-crypt | [MIT](https://opensource.org/license/mit/) | -| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) | -| github.com/antlr/antlr4/runtime/Go/antlr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) | -| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) | -| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) | -| github.com/avast/retry-go/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/aybabtme/rgbterm | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-pipeline-go/pipeline | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/internal | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/azure-storage-blob-go/azblob | [MIT](https://opensource.org/license/mit/) | -| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/azure/cli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/autorest/validation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) | -| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) | -| github.com/bketelsen/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/blang/semver | [MIT](https://opensource.org/license/mit/) | -| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/bshuster-repo/logrus-logstash-hook | [MIT](https://opensource.org/license/mit/) | -| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) | -| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/c-robinson/iplib | [MIT](https://opensource.org/license/mit/) | -| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/cavaliergopher/grab | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/cavaliergopher/grab/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/cert-manager/cert-manager/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/cheggaaa/pb | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/chuckpreslar/emission | [MIT](https://opensource.org/license/mit/) | -| github.com/cloudflare/circl | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/containerd/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/continuity | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/errdefs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/fifo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/stargz-snapshotter/estargz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/ttrpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containerd/typeurl/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/containers/podman/v2/pkg/ctime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coredns/corefile-migration/migration | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coreos/go-oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coreos/go-oidc/v3/oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/coreos/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) | -| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/denisbrodbeck/machineid | [MIT](https://opensource.org/license/mit/) | -| github.com/devfile/api/v2/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/devfile/library/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/devfile/registry-support/index/generator/schema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/devfile/registry-support/registry-library/library | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/dgraph-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) | -| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/disintegration/imaging | [MIT](https://opensource.org/license/mit/) | -| github.com/diskfs/go-diskfs | [MIT](https://opensource.org/license/mit/) | -| github.com/distribution/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/cli/cli/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/distribution/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/docker-credential-helpers | [MIT](https://opensource.org/license/mit/) | -| github.com/docker/go-connections | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-connections/tlsconfig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-events | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/docker/libtrust | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/dsnet/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) | -| github.com/edsrzf/mmap-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/eliukblau/pixterm/pkg/ansimage | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/emirpasic/gods | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/evanphx/json-patch/v5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) | -| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) | -| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) | -| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/foxboron/go-uefi | [MIT](https://opensource.org/license/mit/) | -| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/gabriel-vasile/mimetype | [MIT](https://opensource.org/license/mit/) | -| github.com/gdamore/encoding | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gdamore/tcell/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) | -| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) | -| github.com/go-git/gcfg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-git/go-billy/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) | -| github.com/go-openapi/analysis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) | -| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/go-playground/locales | [MIT](https://opensource.org/license/mit/) | -| github.com/go-playground/universal-translator | [MIT](https://opensource.org/license/mit/) | -| github.com/go-playground/validator/v10 | [MIT](https://opensource.org/license/mit/) | -| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) | -| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/go-webauthn/x/revoke | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) | -| github.com/gobwas/glob | [MIT](https://opensource.org/license/mit/) | -| github.com/gofrs/flock | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gofrs/uuid | [MIT](https://opensource.org/license/mit/) | -| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/goharbor/go-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/golang-jwt/jwt/v5 | [MIT](https://opensource.org/license/mit/) | -| github.com/golang/glog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/golang/mock/gomock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/golang/protobuf/proto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-containerregistry | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-github/v45/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-querystring/query | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/martian/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/s2a-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gookit/color | [MIT](https://opensource.org/license/mit/) | -| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gophercloud/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gorhill/cronexpr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/gorilla/handlers | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/gorilla/mux | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/gosuri/uitable | [MIT](https://opensource.org/license/mit/) | -| github.com/gosuri/uitable/util/wordwrap | [MIT](https://opensource.org/license/mit/) | -| github.com/graph-gophers/graphql-go | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) | -| github.com/hashicorp/errwrap | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/hashicorp/hcl | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | -| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) | -| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/itchyny/gojq | [MIT](https://opensource.org/license/mit/) | -| github.com/itchyny/timefmt-go | [MIT](https://opensource.org/license/mit/) | -| github.com/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/jaypipes/ghw | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jaypipes/pcidb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jbenet/go-context/io | [MIT](https://opensource.org/license/mit/) | -| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) | -| github.com/joho/godotenv | [MIT](https://opensource.org/license/mit/) | -| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) | -| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) | -| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) | -| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | -| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | -| github.com/kairos-io/kairos-agent/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kairos-io/kairos-sdk | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kairos-io/provider-k3s/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) | -| github.com/kendru/darwin/go/depgraph | [MIT](https://opensource.org/license/mit/) | -| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) | -| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/klauspost/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) | -| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) | -| github.com/kr/pretty | [MIT](https://opensource.org/license/mit/) | -| github.com/kr/text | [MIT](https://opensource.org/license/mit/) | -| github.com/kylelemons/godebug | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/kyverno/go-wildcard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/lann/builder | [MIT](https://opensource.org/license/mit/) | -| github.com/lann/ps | [MIT](https://opensource.org/license/mit/) | -| github.com/leodido/go-urn | [MIT](https://opensource.org/license/mit/) | -| github.com/lib/pq | [MIT](https://opensource.org/license/mit/) | -| github.com/libp2p/go-reuseport | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/lithammer/fuzzysearch/fuzzy | [MIT](https://opensource.org/license/mit/) | -| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MIT](https://opensource.org/license/mit/) | -| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/lucasb-eyer/go-colorful | [MIT](https://opensource.org/license/mit/) | -| github.com/magiconair/properties | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) | -| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) | -| github.com/MakeNowJust/heredoc | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/goutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/Masterminds/semver | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/Masterminds/squirrel | [MIT](https://opensource.org/license/mit/) | -| github.com/mattermost/xml-roundtrip-validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-ieproxy | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) | -| github.com/mattn/go-runewidth | [MIT](https://opensource.org/license/mit/) | -| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mauromorales/xpasswd/pkg/users | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/metal3-io/ip-address-manager/api/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/colorstring | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) | -| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) | -| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/moby/libnetwork/resolvconf | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/sys/mountinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/sys/signal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/sys/user | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mongodb/mongo-tools-common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) | -| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) | -| github.com/morikuni/aec | [MIT](https://opensource.org/license/mit/) | -| github.com/mudler/entities/pkg/entities | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mudler/go-pluggable | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/mudler/yip/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) | -| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nats-io/nats.go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/nfnt/resize | [ISC](https://opensource.org/license/isc-license-txt) | -| github.com/nicksnyder/go-i18n/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) | -| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opencontainers/image-spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opencontainers/image-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opencontainers/runtime-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opencontainers/selinux | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/api/config/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/custom-resource-status/conditions/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/openshift/library-go/pkg/crypto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/kubectl-operator/pkg/action | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/operator-framework/operator-registry/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/otiai10/copy | [MIT](https://opensource.org/license/mit/) | -| github.com/packethost/packngo/metadata | [MIT](https://opensource.org/license/mit/) | -| github.com/PaesslerAG/gval | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/PaesslerAG/jsonpath | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) | -| github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) | -| github.com/phayes/permbits | [MIT](https://opensource.org/license/mit/) | -| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) | -| github.com/pierrec/lz4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/pkg/xattr | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pquerna/cachecontrol | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus-community/pro-bing | [MIT](https://opensource.org/license/mit/) | -| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pterm/pterm | [MIT](https://opensource.org/license/mit/) | -| github.com/PuerkitoBio/purell | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/PuerkitoBio/urlesc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/pytimer/k8sutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/qeesung/image2ascii | [MIT](https://opensource.org/license/mit/) | -| github.com/rancher-sandbox/linuxkit/providers | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/rawagner/graphql-transport-ws/graphqlws | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/rawagner/graphql-transport-ws/graphqlws/internal/connection | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/rivo/tview | [MIT](https://opensource.org/license/mit/) | -| github.com/rivo/uniseg | [MIT](https://opensource.org/license/mit/) | -| github.com/rs/zerolog | [MIT](https://opensource.org/license/mit/) | -| github.com/rubenv/sql-migrate | [MIT](https://opensource.org/license/mit/) | -| github.com/rubenv/sql-migrate/sqlparse | [MIT](https://opensource.org/license/mit/) | -| github.com/russellhaering/gosaml2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/russellhaering/goxmldsig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/saferwall/pe | [MIT](https://opensource.org/license/mit/) | -| github.com/sagikazarmark/slog-shim | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/samber/lo | [MIT](https://opensource.org/license/mit/) | -| github.com/sanathkr/go-yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/sanathkr/yaml | [MIT](https://opensource.org/license/mit/) | -| github.com/sanity-io/litter | [MIT](https://opensource.org/license/mit/) | -| github.com/santhosh-tekuri/jsonschema/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/satori/go.uuid | [MIT](https://opensource.org/license/mit/) | -| github.com/schollz/progressbar/v3 | [MIT](https://opensource.org/license/mit/) | -| github.com/secDre4mer/pkcs7 | [MIT](https://opensource.org/license/mit/) | -| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) | -| github.com/shirou/gopsutil | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/shirou/gopsutil/v3 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) | -| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) | -| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) | -| github.com/skeema/knownhosts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/skip2/go-qrcode | [MIT](https://opensource.org/license/mit/) | -| github.com/spf13/afero | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) | -| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) | -| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/spf13/viper | [MIT](https://opensource.org/license/mit/) | -| github.com/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) | -| github.com/stretchr/objx | [MIT](https://opensource.org/license/mit/) | -| github.com/stretchr/testify | [MIT](https://opensource.org/license/mit/) | -| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) | -| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) | -| github.com/subosito/gotenv | [MIT](https://opensource.org/license/mit/) | -| github.com/swaggest/jsonschema-go | [MIT](https://opensource.org/license/mit/) | -| github.com/swaggest/refl | [MIT](https://opensource.org/license/mit/) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tklauser/go-sysconf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/tklauser/numcpus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/tredoe/osutil/v2/userutil/crypt | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| github.com/twpayne/go-vfs | [MIT](https://opensource.org/license/mit/) | -| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) | -| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/valyala/fastjson | [MIT](https://opensource.org/license/mit/) | -| github.com/vbatts/tar-split/archive/tar | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/vishvananda/netlink | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/vishvananda/netns | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/vmware/govmomi/simulator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/vmware/govmomi/vim25/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/vmware/govmomi/vim25/xml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/vmware/vmw-guestinfo | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/wayneashleyberry/terminal-dimensions | [MIT](https://opensource.org/license/mit/) | -| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) | -| github.com/xanzy/ssh-agent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xdg-go/pbkdf2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xdg-go/stringprep | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xeipuuv/gojsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xeipuuv/gojsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xeipuuv/gojsonschema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xi2/xz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) | -| github.com/xo/terminfo | [MIT](https://opensource.org/license/mit/) | -| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) | -| github.com/zcalusic/sysinfo | [MIT](https://opensource.org/license/mit/) | -| github.com/zcalusic/sysinfo/cpuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| github.com/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) | -| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.opencensus.io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) | -| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) | -| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/crypto/ed25519 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/exp/maps | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/image | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/mod/sumdb/dirhash | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/net/idna | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/sync/errgroup | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/sync/semaphore | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| google.golang.org/appengine | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/genproto/googleapis/rpc/status | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/genproto/protobuf/field_mask | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| gopkg.in/check.v1 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| gopkg.in/djherbis/times.v1 | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| gopkg.in/ini.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/natefinch/lumberjack.v2 | [MIT](https://opensource.org/license/mit/) | -| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| gopkg.in/validator.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/warnings.v0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | -| gopkg.in/yaml.v1 | [LGPL-3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) | -| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) | -| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiextensions-apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiextensions-apiserver/pkg/apis/apiextensions | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apimachinery | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apimachinery/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apimachinery/third_party/forked/golang | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/apimachinery/third_party/forked/golang/reflect | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/apiserver/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiserver/pkg/endpoints/deprecation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/apiserver/pkg/storage/names | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/cli-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/client-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/client-go/third_party/forked/golang/template | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/cluster-bootstrap | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/cluster-bootstrap/token | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/component-base | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/component-base/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/component-base/version | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/klog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/klog/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| k8s.io/kube-openapi/pkg/util/proto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/validation/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/validation/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/validation/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kube-openapi/pkg/validation/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kubectl/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kubelet/config/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/kubernetes | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/metrics/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/metrics/pkg/apis/metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/mount-utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| k8s.io/utils/internal/third_party/forked/golang/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | -| kubevirt.io/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| kubevirt.io/controller-lifecycle-operator-sdk/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| libvirt.org/go/libvirt | [MIT](https://opensource.org/license/mit/) | -| libvirt.org/libvirt-go-xml | [MIT](https://opensource.org/license/mit/) | -| loud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| oras.land/oras-go/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| pault.ag/go/modprobe | [MIT](https://opensource.org/license/mit/) | -| pault.ag/go/topsort | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/cluster-api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-aws | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-azure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-gcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/controller-runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/controller-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/gateway-api/apis/v1alpha2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | -| sigs.k8s.io/yaml | [MIT](https://opensource.org/license/mit/) | -| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | - -
+| **Library** | **License** | +| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| cloud.google.com/go/compute/metadata | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| cloud.google.com/go/container | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| cloud.google.com/go/container/apiv1/containerpb | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| dario.cat/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| emperror.dev/errors | [MIT](https://opensource.org/license/mit/) | +| github.com/andreburgaud/crypt2go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/andybalholm/brotli | [MIT](https://opensource.org/license/mit/) | +| github.com/antlr/antlr4/runtime/Go/antlr | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/apparentlymart/go-cidr/cidr | [MIT](https://opensource.org/license/mit/) | +| github.com/asaskevich/govalidator | [MIT](https://opensource.org/license/mit/) | +| github.com/avast/retry-go | [MIT](https://opensource.org/license/mit/) | +| github.com/avast/retry-go/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/aws/aws-sdk-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/aws/aws-sdk-go/internal/sync/singleflight | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/awslabs/goformation/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/azure-pipeline-go/pipeline | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/azcore | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/azidentity | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/internal | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/azure-storage-blob-go/azblob | [MIT](https://opensource.org/license/mit/) | +| github.com/Azure/go-autorest/autorest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/adal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/azure/auth | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/azure/cli | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/date | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/to | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/autorest/validation | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/logger | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Azure/go-autorest/tracing | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/AzureAD/microsoft-authentication-library-for-go/apps | [MIT](https://opensource.org/license/mit/) | +| github.com/beevik/etree | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/beorn7/perks/quantile | [MIT](https://opensource.org/license/mit/) | +| github.com/bketelsen/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/blang/semver | [MIT](https://opensource.org/license/mit/) | +| github.com/blang/semver/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/bshuster-repo/logrus-logstash-hook | [MIT](https://opensource.org/license/mit/) | +| github.com/BurntSushi/toml | [MIT](https://opensource.org/license/mit/) | +| github.com/bxcodec/faker/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/canonical/cluster-api-bootstrap-provider-microk8s/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/canonical/cluster-api-control-plane-provider-microk8s/api/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/cert-manager/cert-manager/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/cespare/xxhash/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/chai2010/gettext-go | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/cloudflare/circl | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/containerd/containerd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/containerd/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coredns/caddy/caddyfile | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coredns/corefile-migration/migration | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coreos/go-oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coreos/go-oidc/v3/oidc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/coreos/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/corvus-ch/logr | [MIT](https://opensource.org/license/mit/) | +| github.com/cyphar/filepath-securejoin | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/davecgh/go-spew/spew | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/devfile/api/v2/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/devfile/library/v2/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/devfile/registry-support/index/generator/schema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/devfile/registry-support/registry-library/library | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dgraph-io/ristretto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/dgraph-io/ristretto/z | [MIT](https://opensource.org/license/mit/) | +| github.com/dimchansky/utfbom | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/distribution/distribution/v3/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/distribution/reference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/cli/cli/config | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/distribution | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/distribution/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/docker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/docker-credential-helpers | [MIT](https://opensource.org/license/mit/) | +| github.com/docker/go-connections/tlsconfig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/go-metrics | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/go-units | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/docker/libtrust | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/drone/envsubst/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/dsnet/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/dustin/go-humanize | [MIT](https://opensource.org/license/mit/) | +| github.com/emicklei/go-restful/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/emirpasic/gods | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/evanphx/json-patch | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/evanphx/json-patch/v5 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/exponent-io/jsonpath | [MIT](https://opensource.org/license/mit/) | +| github.com/fatih/color | [MIT](https://opensource.org/license/mit/) | +| github.com/felixge/httpsnoop | [MIT](https://opensource.org/license/mit/) | +| github.com/flynn/go-shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/fsnotify/fsnotify | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/fxamacker/cbor/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/ghodss/yaml | [MIT](https://opensource.org/license/mit/) | +| github.com/go-errors/errors | [MIT](https://opensource.org/license/mit/) | +| github.com/go-git/gcfg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/go-git/go-billy/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-git/go-git/v5 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-gorp/gorp/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/go-logr/logr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-logr/stdr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-mail/mail | [MIT](https://opensource.org/license/mit/) | +| github.com/go-openapi/analysis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/errors | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/jsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/jsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/loads | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/runtime/middleware/denco | [MIT](https://opensource.org/license/mit/) | +| github.com/go-openapi/spec | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/strfmt | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/swag | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-openapi/validate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/go-stack/stack | [MIT](https://opensource.org/license/mit/) | +| github.com/go-webauthn/webauthn | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/go-webauthn/x/revoke | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/gobuffalo/flect | [MIT](https://opensource.org/license/mit/) | +| github.com/gobwas/glob | [MIT](https://opensource.org/license/mit/) | +| github.com/gofrs/uuid | [MIT](https://opensource.org/license/mit/) | +| github.com/gogo/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/goharbor/go-client/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang-jwt/jwt/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/golang-jwt/jwt/v5 | [MIT](https://opensource.org/license/mit/) | +| github.com/golang/glog | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang/groupcache/lru | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang/mock/gomock | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/golang/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/golang/snappy | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/btree | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/cel-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/gnostic-models | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/go-cmp/cmp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-github/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-github/v45/github | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-querystring/query | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/google/go-tpm | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/gofuzz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/martian/log | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/s2a-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/shlex | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/google/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/googleapis/enterprise-certificate-proxy/client | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/googleapis/gax-go/v2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/googleapis/gnostic | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gophercloud/gophercloud | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gophercloud/utils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gorhill/cronexpr | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/gorilla/handlers | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/gorilla/mux | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/gorilla/websocket | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/gosuri/uitable | [MIT](https://opensource.org/license/mit/) | +| github.com/gosuri/uitable/util/wordwrap | [MIT](https://opensource.org/license/mit/) | +| github.com/graph-gophers/graphql-go | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/gregjones/httpcache | [MIT](https://opensource.org/license/mit/) | +| github.com/hashicorp/errwrap | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-multierror | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-uuid | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/go-version | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/golang-lru | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/hashicorp/hcl | [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) | +| github.com/huandu/xstrings | [MIT](https://opensource.org/license/mit/) | +| github.com/imdario/mergo | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/jasonlvhit/gocron | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/jbenet/go-context/io | [MIT](https://opensource.org/license/mit/) | +| github.com/jessevdk/go-flags | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/jlaffaye/ftp | [ISC](https://opensource.org/license/isc-license-txt) | +| github.com/jmespath/go-jmespath | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/jmoiron/sqlx | [MIT](https://opensource.org/license/mit/) | +| github.com/jonboulle/clockwork | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/josharian/intern | [MIT](https://opensource.org/license/mit/) | +| github.com/jpillora/backoff | [MIT](https://opensource.org/license/mit/) | +| github.com/json-iterator/go | [MIT](https://opensource.org/license/mit/) | +| github.com/juliangruber/go-intersect | [MIT](https://opensource.org/license/mit/) | +| github.com/kelseyhightower/envconfig | [MIT](https://opensource.org/license/mit/) | +| github.com/kevinburke/ssh_config | [MIT](https://opensource.org/license/mit/) | +| github.com/klauspost/compress | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/klauspost/compress | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/klauspost/compress/internal/snapref | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/klauspost/compress/zstd/internal/xxhash | [MIT](https://opensource.org/license/mit/) | +| github.com/klauspost/pgzip | [MIT](https://opensource.org/license/mit/) | +| github.com/kr/pretty | [MIT](https://opensource.org/license/mit/) | +| github.com/kr/text | [MIT](https://opensource.org/license/mit/) | +| github.com/kylelemons/godebug | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/kyverno/go-wildcard | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/lann/builder | [MIT](https://opensource.org/license/mit/) | +| github.com/lann/ps | [MIT](https://opensource.org/license/mit/) | +| github.com/lib/pq | [MIT](https://opensource.org/license/mit/) | +| github.com/liggitt/tabwriter | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/loft-sh/cluster-api-provider-vcluster/api/v1alpha1 | [MIT](https://opensource.org/license/mit/) | +| github.com/loft-sh/vcluster/pkg/constants | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/magiconair/properties | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/magisterquis/connectproxy | [Zlib](https://www.zlib.net/zlib_license.html) | +| github.com/mailru/easyjson | [MIT](https://opensource.org/license/mit/) | +| github.com/MakeNowJust/heredoc | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/goutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/Masterminds/semver | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/semver/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/sprig/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/Masterminds/squirrel | [MIT](https://opensource.org/license/mit/) | +| github.com/mattermost/xml-roundtrip-validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mattn/go-colorable | [MIT](https://opensource.org/license/mit/) | +| github.com/mattn/go-ieproxy | [MIT](https://opensource.org/license/mit/) | +| github.com/mattn/go-isatty | [MIT](https://opensource.org/license/mit/) | +| github.com/mattn/go-runewidth | [MIT](https://opensource.org/license/mit/) | +| github.com/matttproud/golang_protobuf_extensions/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/matttproud/golang_protobuf_extensions/v2/pbutil | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/metal3-io/ip-address-manager/api/v1alpha1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mholt/archiver/v3 | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/copystructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/go-homedir | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/go-wordwrap | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/hashstructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/mapstructure | [MIT](https://opensource.org/license/mit/) | +| github.com/mitchellh/reflectwalk | [MIT](https://opensource.org/license/mit/) | +| github.com/moby/locker | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/moby/spdystream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/moby/term | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/modern-go/concurrent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/modern-go/reflect2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mongodb/mongo-tools | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/mongodb/mongo-tools-common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/monochromegane/go-gitignore | [MIT](https://opensource.org/license/mit/) | +| github.com/montanaflynn/stats | [MIT](https://opensource.org/license/mit/) | +| github.com/munnerz/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/mxk/go-flowrate/flowrate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/Narasimha1997/ratelimiter | [MIT](https://opensource.org/license/mit/) | +| github.com/nats-io/jwt/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nats.go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nkeys | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nats-io/nuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/nicksnyder/go-i18n/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/nwaples/rardecode | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/oklog/ulid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/onsi/gomega | [MIT](https://opensource.org/license/mit/) | +| github.com/opencontainers/go-digest | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/opencontainers/image-spec/specs-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/openshift/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/openshift/api/config/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/openshift/console | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/openshift/custom-resource-status/conditions/v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/openshift/library-go/pkg/crypto | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/opentracing/opentracing-go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/api/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/kubectl-operator/pkg/action | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/operator-framework/operator-registry/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/PaesslerAG/gval | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/PaesslerAG/jsonpath | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pborman/uuid | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pelletier/go-toml/v2 | [MIT](https://opensource.org/license/mit/) | +| github.com/peterbourgon/diskv | [MIT](https://opensource.org/license/mit/) | +| github.com/phpdave11/gofpdi | [MIT](https://opensource.org/license/mit/) | +| github.com/pierrec/lz4/v4 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pjbgf/sha1cd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/pkg/browser | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/pkg/errors | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/pmezard/go-difflib/difflib | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/pquerna/cachecontrol | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/prometheus/client_golang/prometheus | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/prometheus/client_model/go | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/prometheus/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/prometheus/procfs | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/ProtonMail/go-crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/PuerkitoBio/purell | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/PuerkitoBio/urlesc | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/rancher/system-upgrade-controller/pkg/apis | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rancher/wrangler/pkg/genericcondition | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/rawagner/graphql-transport-ws/graphqlws | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/rawagner/graphql-transport-ws/graphqlws/internal/connection | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/rubenv/sql-migrate | [MIT](https://opensource.org/license/mit/) | +| github.com/rubenv/sql-migrate/sqlparse | [MIT](https://opensource.org/license/mit/) | +| github.com/russellhaering/gosaml2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/russellhaering/goxmldsig | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/russross/blackfriday/v2 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| github.com/sanathkr/go-yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/sanathkr/yaml | [MIT](https://opensource.org/license/mit/) | +| github.com/sergi/go-diff/diffmatchpatch | [MIT](https://opensource.org/license/mit/) | +| github.com/shopspring/decimal | [MIT](https://opensource.org/license/mit/) | +| github.com/signintech/gopdf | [MIT](https://opensource.org/license/mit/) | +| github.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) | +| github.com/skeema/knownhosts | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/afero | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/cast | [MIT](https://opensource.org/license/mit/) | +| github.com/spf13/cobra | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/spf13/jwalterweatherman | [MIT](https://opensource.org/license/mit/) | +| github.com/spf13/pflag | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/spf13/viper | [MIT](https://opensource.org/license/mit/) | +| github.com/stoewer/go-strcase | [MIT](https://opensource.org/license/mit/) | +| github.com/stretchr/testify/assert | [MIT](https://opensource.org/license/mit/) | +| github.com/stripe/stripe-go/v71 | [MIT](https://opensource.org/license/mit/) | +| github.com/subosito/gotenv | [MIT](https://opensource.org/license/mit/) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/twpayne/go-vfs/v4 | [MIT](https://opensource.org/license/mit/) | +| github.com/ulikunitz/xz | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/valyala/fastjson | [MIT](https://opensource.org/license/mit/) | +| github.com/vmware/govmomi | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/vmware/govmomi/simulator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/vmware/govmomi/vim25/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/vmware/govmomi/vim25/xml | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| github.com/x448/float16 | [MIT](https://opensource.org/license/mit/) | +| github.com/xanzy/ssh-agent | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xdg-go/pbkdf2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xdg-go/scram | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xdg-go/stringprep | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xeipuuv/gojsonpointer | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xeipuuv/gojsonreference | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xeipuuv/gojsonschema | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xi2/xz | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| github.com/xlab/treeprint | [MIT](https://opensource.org/license/mit/) | +| github.com/youmark/pkcs8 | [MIT](https://opensource.org/license/mit/) | +| github.com/ztrue/shutdown | [MIT](https://opensource.org/license/mit/) | +| go.mongodb.org/mongo-driver | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opencensus.io | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/otel | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/otel/metric | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.opentelemetry.io/otel/trace | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| go.starlark.net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| go.uber.org/atomic | [MIT](https://opensource.org/license/mit/) | +| go.uber.org/multierr | [MIT](https://opensource.org/license/mit/) | +| golang.org/x/crypto | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/crypto/ed25519 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/exp | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/exp/maps | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/mod/sumdb/dirhash | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/net | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/net/idna | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/oauth2 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync/errgroup | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sync/semaphore | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sys | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/sys/unix | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/term | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/text | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| golang.org/x/time/rate | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gomodules.xyz/jsonpatch/v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/api | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| google.golang.org/api/internal/third_party/uritemplates | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| google.golang.org/appengine | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/googleapis/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/googleapis/rpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/genproto/googleapis/rpc/status | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/grpc | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| google.golang.org/protobuf | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/check.v1 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| gopkg.in/inf.v0 | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/ini.v1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/square/go-jose.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/square/go-jose.v2/json | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| gopkg.in/validator.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/warnings.v0 | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| gopkg.in/yaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| gopkg.in/yaml.v3 | [MIT](https://opensource.org/license/mit/) | +| helm.sh/helm/v3 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| ithub.com/sirupsen/logrus | [MIT](https://opensource.org/license/mit/) | +| k8s.io/api | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiextensions-apiserver/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiextensions-apiserver/pkg/apis/apiextensions | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiextensions-apiserver/third_party/forked/celopenapi/model | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apimachinery | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apimachinery/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apimachinery/third_party/forked/golang | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apimachinery/third_party/forked/golang/reflect | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiserver/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/apiserver/pkg/storage/names | [MIT](https://opensource.org/license/mit/) | +| k8s.io/cli-runtime/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/client-go | [MIT](https://opensource.org/license/mit/) | +| k8s.io/client-go/third_party/forked/golang/template | [MIT](https://opensource.org/license/mit/) | +| k8s.io/cluster-bootstrap/token | [MIT](https://opensource.org/license/mit/) | +| k8s.io/component-base | [MIT](https://opensource.org/license/mit/) | +| k8s.io/component-base/config | [MIT](https://opensource.org/license/mit/) | +| k8s.io/component-base/version | [MIT](https://opensource.org/license/mit/) | +| k8s.io/klog | [MIT](https://opensource.org/license/mit/) | +| k8s.io/klog/v2 | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| k8s.io/kube-openapi/pkg/util/proto | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/validation/errors | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/validation/spec | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/validation/strfmt | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kube-openapi/pkg/validation/validate | [MIT](https://opensource.org/license/mit/) | +| k8s.io/kubectl/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/metrics/pkg | [MIT](https://opensource.org/license/mit/) | +| k8s.io/pod-security-admission | [MIT](https://opensource.org/license/mit/) | +| k8s.io/utils | [MIT](https://opensource.org/license/mit/) | +| k8s.io/utils/internal/third_party/forked/golang/net | [MIT](https://opensource.org/license/mit/) | +| kubevirt.io/api | [MIT](https://opensource.org/license/mit/) | +| kubevirt.io/containerized-data-importer-api/pkg/apis/core | [MIT](https://opensource.org/license/mit/) | +| kubevirt.io/controller-lifecycle-operator-sdk/api | [MIT](https://opensource.org/license/mit/) | +| libvirt.org/go/libvirt | [MIT](https://opensource.org/license/mit/) | +| libvirt.org/libvirt-go-xml | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@ant-design/colors | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@ant-design/compatible | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@ant-design/icons | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@ant-design/icons-svg | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/code-frame | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/generator | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-annotate-as-pure | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-environment-visitor | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-function-name | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-hoist-variables | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-module-imports | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-split-export-declaration | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-string-parser | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/helper-validator-identifier | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/highlight | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/parser | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/runtime | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/template | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/traverse | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@babel/types | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@ctrl/tinycolor | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@datadog/browser-logs | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@emotion/is-prop-valid | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@emotion/memoize | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@emotion/stylis | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@emotion/unitless | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@fortawesome/fontawesome-common-types | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@fortawesome/fontawesome-svg-core | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@fortawesome/free-solid-svg-icons | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@fortawesome/react-fontawesome | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@fullstory/browser | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@jridgewell/gen-mapping | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@jridgewell/resolve-uri | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@jridgewell/set-array | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@jridgewell/sourcemap-codec | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@jridgewell/trace-mapping | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/annotations | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/arcs | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/axes | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/@nivo/bar | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/colors | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/core | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/legends | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/@nivo/line | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/pie | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/recompose | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/scales | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/tooltip | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nivo/voronoi | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nodelib/fs.scandir | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nodelib/fs.stat | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@nodelib/fs.walk | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/animated | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/core | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/rafz | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/shared | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/three | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/types | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-spring/web | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@react-three/fiber | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@stripe/react-stripe-js | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@stripe/stripe-js | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/hoist-non-react-statics | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/json-schema | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/node | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/prop-types | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/@types/react | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/react-dom | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/react-reconciler | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/react-redux | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/react-router-dom | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/scheduler | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/semver | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@types/styled-components | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/eslint-plugin | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/parser | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/scope-manager | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/type-utils | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/types | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/typescript-estree | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/utils | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@typescript-eslint/visitor-keys | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/axis | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/event | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/gradient | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/grid | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/group | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/@visx/hierarchy | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/mock-data | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/@visx/responsive | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/@visx/scale | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/@visx/shape | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/@visx/tooltip | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/add-dom-event-listener | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/ajv | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/ansi-styles | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/antd | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/array-union | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/asap | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/async-validator | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/asynckit | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/axios | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/axios-retry | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/babel-plugin-styled-components | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/babel-plugin-syntax-jsx | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/babel-runtime | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/base-64 | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/braces | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/camelize | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/chalk | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/classnames | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/clipboard | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/color | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/color-convert | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/color-name | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/color-string | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/combined-stream | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/component-classes | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/component-indexof | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/connected-react-router | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/core-js | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/create-react-class | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/css-animation | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/css-color-keywords | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/css-to-react-native | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/csstype | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-array | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-color | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-delaunay | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-format | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-interpolate | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-path | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/d3-scale | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-scale-chromatic | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-shape | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-time | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-time | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/d3-time-format | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/data-uri-to-buffer | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/debounce | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/debug | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/decode-uri-component | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/delaunator | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/delayed-stream | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/delegate | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/dir-glob | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/dom-helpers | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/dom-scroll-into-view | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/draft-js | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/encoding | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/escape-string-regexp | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/eslint-scope | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/eslint-utils | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/eslint-visitor-keys | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/esrecurse | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/estraverse | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fast-deep-equal | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fast-glob | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fast-plist | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fastq | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fbjs | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/fetch-blob | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fill-range | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/filter-obj | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/follow-redirects | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/form-data | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/formdata-polyfill | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/fsevents | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/glob-parent | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/globals | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/globby | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/good-listener | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/has-flag | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/history | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/hoist-non-react-statics | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/html-parse-stringify | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/i18next | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/i18next-browser-languagedetector | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/i18next-http-backend | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/i18next-xhr-backend | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/iconv-lite | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/ignore | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/immer | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/immutable | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/immutable | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/internmap | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/is-arrayish | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/is-extglob | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/is-glob | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/is-number | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/is-stream | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/isarray | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/isomorphic-fetch | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/js-tokens | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/jsesc | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/json-schema-traverse | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/jsonc-parser | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/leaflet | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/leaflet.markercluster | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/less | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/lodash | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/lodash.camelcase | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/lodash.isequalwith | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/lodash.upperfirst | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/loose-envify | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/lru-cache | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/lscache | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/merge2 | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/micromatch | [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/legalcode.en) | +| npmjs.com/package/mime-db | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/mime-types | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/moment | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/monaco-editor | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/monaco-marker-data-provider | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/monaco-themes | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/monaco-worker-manager | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/monaco-yaml | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/ms | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/natural-compare-lite | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/netmask | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/node-domexception | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/node-fetch | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/normalizr | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/object-assign | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/omit.js | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/path-browserify | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/path-to-regexp | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/path-type | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/performance-now | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/picomatch | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/postcss-value-parser | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/prettier | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/promise | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/prop-types | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/punycode | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/query-string | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/queue-microtask | [ISC](https://opensource.org/license/isc-license-txt)
[MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/raf | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/rc-animate | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/rc-editor-core | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/rc-editor-mention | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/rc-form | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/rc-util | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/react-calendar | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-clipboard.js | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-dev-utils | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-dom | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-helmet | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-i18next | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-is | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-js-cron | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-lifecycles-compat | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-merge-refs | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-reconciler | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-redux | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-router | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-router-dom | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-teleporter | [0BSD](https://opensource.org/license/0bsd) | +| npmjs.com/package/react-three-fiber | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/react-transition-group | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/react-use-measure | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/redux | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/redux-debounce-thunk | [BSD-2-Clause](https://opensource.org/license/bsd-2-clause) | +| npmjs.com/package/redux-devtools-extension | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/redux-thunk | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/regenerator-runtime | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/regexpp | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/require-from-string | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/reselect | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/resize-observer-polyfill | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/resolve-pathname | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/reusify | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/rollup | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/run-node | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/run-parallel | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/safer-buffer | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/scheduler | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/seamless-immutable | [ISC](https://opensource.org/license/isc-license-txt) | +| npmjs.com/package/select | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/semver | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/setimmediate | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/shallowequal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/simple-swizzle | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/slash | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/split-on-first | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/strict-uri-encode | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/styled-components | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/supports-color | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/three | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/tiny-emitter | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/tiny-invariant | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/tiny-warning | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/to-fast-properties | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/to-regex-range | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/tslib | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/tsutils | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/typescript | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/ua-parser-js | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/unique-names-generator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/uri-js | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/url | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/use-asset | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/utility-types | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/uuid | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/validator | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/value-equal | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/void-elements | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/vscode-languageserver-textdocument | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/vscode-languageserver-types | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/vscode-uri | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/warning | [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) | +| npmjs.com/package/web-streams-polyfill | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/whatwg-fetch | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/yallist | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| npmjs.com/package/yaml | [MIT](https://opensource.org/license/mit/) | +| npmjs.com/package/zustand | [MIT](https://opensource.org/license/mit/) | +| oras.land/oras-go/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-aws | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-azure | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-gcp | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/cluster-api/test/infrastructure/docker/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/controller-runtime | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/controller-runtime/pkg | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/gateway-api/apis/v1alpha2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/json | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/kustomize/api | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/kustomize/kyaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/qri-io/starlib/util | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/structured-merge-diff/v4 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/yaml | [MIT](https://opensource.org/license/mit/) | +| sigs.k8s.io/yaml | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | +| sigs.k8s.io/yaml/goyaml.v2 | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) | diff --git a/docs/docs-content/release-notes/known-issues.md b/docs/docs-content/release-notes/known-issues.md index 95c8d25cd5..ee4203b04d 100644 --- a/docs/docs-content/release-notes/known-issues.md +++ b/docs/docs-content/release-notes/known-issues.md @@ -14,39 +14,42 @@ to review and stay informed about the status of known issues in Palette. As issu The following table lists all known issues that are currently active and affecting users. -| Description | Workaround | Publish Date | Product Component | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------- | -| Clusters with the Virtual Machine Orchestrator (VMO) pack may experience VMs getting stuck in a continuous migration loop, as indicated by a `Migrating` or `Migration` VM status. | Review the [Virtual Machine Orchestrator (VMO) Troubleshooting](../troubleshooting/vmo-issues.md) section for workarounds. | August 1, 2024 | Virtual Machine Orchestrator | -| Palette CLI users who authenticated with the `login` command and specified a Palette console endpoint that does not contain the tenant name are encountering issues with expired JWT tokens. | Re-authenticate using your tenant URL, for example, `https://my-org.console.spectrocloud.com.` If the issue persists after re-authenticating, remove the `~/.palette/palette.yaml` file that is auto-generated by the Palette CLI. Re-authenticate with the `login` command if other commands require it. | July 25, 2024 | CLI | -| Adding new cloud providers, such as Nutanix, is currently unavailable. Private Cloud Gateway (PCG) deployments in new Nutanix environments fail to complete the installation. As a result, adding a new Nutanix environment to launch new host clusters is unavailable. This does not impact existing Nutanix deployments with a PCG deployed. | No workarounds are available. | July 20, 2024 | Clusters, Self-Hosted, PCG | -| Single-node Private Cloud Gateway (PCG) clusters are experiencing an issue upgrading to 4.4.11. The vSphere CSI controller pod fails to start because there are no matching affinity rules. | Check out the [vSphere Controller Pod Fails to Start in Single Node PCG Cluster](../troubleshooting/pcg.md#scenario---vsphere-controller-pod-fails-to-start-in-single-node-pcg-cluster) guide for workaround steps. | July 20, 2024 | PCG | -| When provisioning an Edge cluster, it's possible that some Operating System (OS) user credentials will be lost once the cluster is active. This is because the cloud-init stages from different sources merge during the deployment process, and sometimes, the same stages without distinct names overwrite each other. | Give each of your cloud-init stages in the OS pack and in the Edge installer **user-data** file a unique name. For more information about cloud-init stages and examples of cloud-init stages with names, refer to [Cloud-init Stages](../clusters/edge/edge-configuration/cloud-init.md). | July 17, 2024 | Edge | -| When you use a content bundle to provision a new cluster without using the local Harbor registry, it's possible for the images to be pulled from external networks instead of from the content bundle, consuming network bandwidth. If your Edge host has no connection to external networks or if it cannot locate the image on a remote registry, some pods may enter the `ImagePullBackOff` state at first, but eventually the pods will be created using images from the content bundle. | For connected clusters, you can make sure that the remote images are not reachable by the Edge host, which will stop the Palette agent from downloading the image and consuming bandwidth, and eventually the cluster will be created using images from the content bundle. For airgap clusters, the `ImagePullBackOff` error will eventually resolve on its own and there is no action to take. | July 11, 2024 | Edge | -| When you add a new VMware vSphere Edge host to an Edge cluster, the IP address may fail to be assigned to the Edge host after a reboot. | Review the [Edge Troubleshooting](../troubleshooting/edge.md) section for workarounds. | July 9, 2024 | Edge | -| When you install Palette Edge using an Edge Installer ISO with a RHEL 8 operating system on a Virtual Machine (VM) with insufficient video memory, the QR code in the registration screen does not display correctly. | Increase the video memory of your VM to 8 MB or higher. The steps to do this vary depending on the platform you use to deploy your VM. In vSphere, you can right click on the VM, click **Edit Settings** and adjust the video card memory in the **Video card** tab. | July 9, 2024 | Edge | -| Custom Certificate Authority (CA) is not supported for accessing Azure AKS clusters. Using a custom CA prevents the `spectro-proxy` pack from working correctly with Azure AKS clusters. | No workaround is available. | July 9, 2024 | Packs, Clusters | -| Manifests attached to an Infrastructure Pack, such as OS, Kubernetes, Network, or Storage, are not applied to the Edge cluster. This issue does not impact the infrastructure pack's YAML definition, which is applied to the cluster. | Specify custom configurations through an add-on pack or a custom manifest pack applied after the infrastructure packs. | Jul 9, 2024 | Edge, Packs | -| Clusters using Cilium and deployed to VMware environments with the VXLAN tunnel protocol may encounter an I/O timeout error. This issue is caused by the VXMNET3 adapter, which is dropping network traffic and resulting in VXLAN traffic being dropped. You can learn more about this issue in the [Cilium's GitHub issue #21801](https://github.com/cilium/cilium/issues/21801). | Review the section for workarounds. | June 27, 2024 | Packs, Clusters, Edge | -| [Sonobuoy](../clusters/cluster-management/compliance-scan.md#conformance-testing) scans fail to generate reports on airgapped Palette Edge clusters. | No workaround is available. | June 24, 2024 | Edge | -| Clusters configured with OpenID Connect (OIDC) at the Kubernetes layer encounter issues when authenticating with the [non-admin Kubeconfig file](../clusters/cluster-management/kubeconfig.md#cluster-admin). Kubeconfig files using OIDC to authenticate will not work if the SSL certificate is set at the OIDC provider level. | Use the admin Kubeconfig file to authenticate with the cluster, as it does not use OIDC to authenticate. | June 21, 2024 | Clusters | -| During the platform upgrade from Palette 4.3 to 4.4, Virtual Clusters may encounter a scenario where the pod `palette-controller-manager` is not upgraded to the newer version of Palette. The virtual cluster will continue to be operational, and this does not impact its functionality. | Refer to the [Controller Manager Pod Not Upgraded](../troubleshooting/palette-dev-engine.md#scenario---controller-manager-pod-not-upgraded) troubleshooting guide. | June 15, 2024 | Virtual Clusters | -| Edge hosts with FIPS-compliant RHEL Operating System (OS) distribution may encounter the error where the `systemd-resolved.service` service enters the **failed** state. This prevents the nameserver from being configured, which will result in cluster deployment failure. | Refer to [TroubleShooting](../troubleshooting/edge.md#scenario---systemd-resolvedservice-enters-failed-state) for a workaround. | June 15, 2024 | Edge | -| The GKE cluster's Kubernetes pods are failing to start because the Kubernetes patch version is unavailable. This is encountered during pod restarts or node scaling operations. | Deploy a new cluster and use a GKE cluster profile that does not contain a Kubernetes pack layer with a patch version. Migrate the workloads from the existing cluster to the new cluster. This is a breaking change introduced in Palette 4.4.0 | June 15, 2024 | Packs, Clusters | -| does not support multi-node control plane clusters. The upgrade strategy, `InPlaceUpgrade`, is the only option available for use. | No workaround is available. | June 15, 2024 | Packs | -| Clusters using as the Kubernetes distribution, the control plane node fails to upgrade when using the `InPlaceUpgrade` strategy for sequential upgrades, such as upgrading from version 1.25.x to version 1.26.x and then to version 1.27.x. | Refer to the [Control Plane Node Fails to Upgrade in Sequential MicroK8s Upgrades](../troubleshooting/pack-issues.md) troubleshooting guide for resolution steps. | June 15, 2024 | Packs | -| Azure IaaS clusters are having issues with deployed load balancers and ingress deployments when using Kubernetes versions 1.29.0 and 1.29.4. Incoming connections time out as a result due to a lack of network path inside the cluster. Azure AKS clusters are not impacted. | Use a Kubernetes version lower than 1.29.0 | June 12, 2024 | Clusters | -| OIDC integration with Virtual Clusters is not functional. All other operations related to Virtual Clusters are operational. | No workaround is available. | Jun 11, 2024 | Virtual Clusters | -| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a Datacenter. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | If you encounter the following error message when deploying self-hosted Palette or VerteX: `'ProvisioningFailed failed to provision volume with StorageClass "spectro-storage-class". Error: failed to fetch hosts from entity ComputeResource:domain-xyz` then use the following workaround. Remove standalone hosts directly under the Datacenter from vCenter and allow the volume provisioning to complete. After the volume is provisioned, you can add the standalone hosts back. You can also use a service account that does not have access to the standalone hosts as the user that deployed Palette. | May 21, 2024 | Self-Hosted | -| Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential unresponsiveness. | To avoid this, ensure no backup operations are in progress before scaling nodes or performing other cluster operations that change the cluster state | April 14, 2024 | Clusters | -| Palette automatically creates an AWS security group for worker nodes using the format `-node`. If a security group with the same name already exists in the VPC, the cluster creation process fails. | To avoid this, ensure that no security group with the same name exists in the VPC before creating a cluster. | April 14, 2024 | Clusters | -| K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. | Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047) page. | April 14, 2024 | Packs, Clusters | -| When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) , the cluster deployment fails. | A workaround is to use the AWS VPC CNI in the interim while the issue is resolved. | April 14, 2024 | Packs, Clusters | -| If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation process fails. The issue is caused by existing resources remaining inside the PCG, or the System PCG, that are not cleaned up during the cluster deletion process. | Refer to the [VMware Resources Remain After Cluster Deletion](../troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) troubleshooting guide for resolution steps. | April 14, 2024 | Clusters | -| In a VMware environment, self-hosted Palette instances do not receive a unique cluster ID when deployed, which can cause issues during a node repave event, such as a Kubernetes version upgrade. Specifically, Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) will experience start problems due to the lack of a unique cluster ID. | To resolve this issue, refer to the [Volume Attachment Errors Volume in VMware Environment](../troubleshooting/palette-upgrade.md#volume-attachment-errors-volume-in-vmware-environment) troubleshooting guide. | April 14, 2024 | Self-Hosted | -| Day-2 operations related to infrastructure changes, such as modifying the node size and count, when using MicroK8s are not taking effect. | No workaround is available. | April 14, 2024 | Packs, Clusters | -| If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become and remain unavailable even after the network is restored. | This a known issue disclosed in the [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to pack documentation. | April 14, 2024 | Packs, Edge | -| Edge clusters on Edge hosts with ARM64 processors may experience instability issues that cause cluster failures. | ARM64 support is limited to a specific set of Edge devices. Currently, Nvidia Jetson devices are supported. | April 14, 2024 | Edge | -| During the cluster provisioning process of new edge clusters, the Palette webhook pods may not always deploy successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. | Review the [Palette Webhook Pods Fail to Start](../troubleshooting/edge.md#scenario---palette-webhook-pods-fail-to-start) troubleshooting guide for resolution steps. | April 14, 2024 | Edge | +| Description | Workaround | Publish Date | Product Component | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------------------- | +| On AWS IaaS Microk8s clusters, OS patching can get stuck and fail. | Refer to the [Troubleshooting](../troubleshooting/nodes.md#os-patch-fails-on-aws-with-microk8s-127) section for debug steps. | August 17, 2024 | Palette | +| When upgrading a self-hosted Palette instance from 4.3 to 4.4 the MongoDB pod may be stuck with the following error: `ReadConcernMajorityNotAvailableYet: Read concern majority reads are currently not possible.` | Delete the PVC, PV and the pod manually. All resources will be recreated with the correct configuration. | August 17, 2024 | Self-Hosted Palette | +| For existing clusters that have added a new machine and all new clusters, pods may be stuck in the draining process and require manual intervention to drain the pod. | Manually delete the pod if it is stuck in the draining process. | August 17, 2024 | Palette | +| Clusters with the Virtual Machine Orchestrator (VMO) pack may experience VMs getting stuck in a continuous migration loop, as indicated by a `Migrating` or `Migration` VM status. | Review the [Virtual Machine Orchestrator (VMO) Troubleshooting](../troubleshooting/vmo-issues.md) section for workarounds. | August 1, 2024 | Virtual Machine Orchestrator | +| Palette CLI users who authenticated with the `login` command and specified a Palette console endpoint that does not contain the tenant name are encountering issues with expired JWT tokens. | Re-authenticate using your tenant URL, for example, `https://my-org.console.spectrocloud.com.` If the issue persists after re-authenticating, remove the `~/.palette/palette.yaml` file that is auto-generated by the Palette CLI. Re-authenticate with the `login` command if other commands require it. | July 25, 2024 | CLI | +| Adding new cloud providers, such as Nutanix, is currently unavailable. Private Cloud Gateway (PCG) deployments in new Nutanix environments fail to complete the installation. As a result, adding a new Nutanix environment to launch new host clusters is unavailable. This does not impact existing Nutanix deployments with a PCG deployed. | No workarounds are available. | July 20, 2024 | Clusters, Self-Hosted, PCG | +| Single-node Private Cloud Gateway (PCG) clusters are experiencing an issue upgrading to 4.4.11. The vSphere CSI controller pod fails to start because there are no matching affinity rules. | Check out the [vSphere Controller Pod Fails to Start in Single Node PCG Cluster](../troubleshooting/pcg.md#scenario---vsphere-controller-pod-fails-to-start-in-single-node-pcg-cluster) guide for workaround steps. | July 20, 2024 | PCG | +| When provisioning an Edge cluster, it's possible that some Operating System (OS) user credentials will be lost once the cluster is active. This is because the cloud-init stages from different sources merge during the deployment process, and sometimes, the same stages without distinct names overwrite each other. | Give each of your cloud-init stages in the OS pack and in the Edge installer **user-data** file a unique name. For more information about cloud-init stages and examples of cloud-init stages with names, refer to [Cloud-init Stages](../clusters/edge/edge-configuration/cloud-init.md). | July 17, 2024 | Edge | +| When you use a content bundle to provision a new cluster without using the local Harbor registry, it's possible for the images to be pulled from external networks instead of from the content bundle, consuming network bandwidth. If your Edge host has no connection to external networks or if it cannot locate the image on a remote registry, some pods may enter the `ImagePullBackOff` state at first, but eventually the pods will be created using images from the content bundle. | For connected clusters, you can make sure that the remote images are not reachable by the Edge host, which will stop the Palette agent from downloading the image and consuming bandwidth, and eventually the cluster will be created using images from the content bundle. For airgap clusters, the `ImagePullBackOff` error will eventually resolve on its own and there is no action to take. | July 11, 2024 | Edge | +| When you add a new VMware vSphere Edge host to an Edge cluster, the IP address may fail to be assigned to the Edge host after a reboot. | Review the [Edge Troubleshooting](../troubleshooting/edge.md) section for workarounds. | July 9, 2024 | Edge | +| When you install Palette Edge using an Edge Installer ISO with a RHEL 8 operating system on a Virtual Machine (VM) with insufficient video memory, the QR code in the registration screen does not display correctly. | Increase the video memory of your VM to 8 MB or higher. The steps to do this vary depending on the platform you use to deploy your VM. In vSphere, you can right click on the VM, click **Edit Settings** and adjust the video card memory in the **Video card** tab. | July 9, 2024 | Edge | +| Custom Certificate Authority (CA) is not supported for accessing Azure AKS clusters. Using a custom CA prevents the `spectro-proxy` pack from working correctly with Azure AKS clusters. | No workaround is available. | July 9, 2024 | Packs, Clusters | +| Manifests attached to an Infrastructure Pack, such as OS, Kubernetes, Network, or Storage, are not applied to the Edge cluster. This issue does not impact the infrastructure pack's YAML definition, which is applied to the cluster. | Specify custom configurations through an add-on pack or a custom manifest pack applied after the infrastructure packs. | Jul 9, 2024 | Edge, Packs | +| Clusters using Cilium and deployed to VMware environments with the VXLAN tunnel protocol may encounter an I/O timeout error. This issue is caused by the VXMNET3 adapter, which is dropping network traffic and resulting in VXLAN traffic being dropped. You can learn more about this issue in the [Cilium's GitHub issue #21801](https://github.com/cilium/cilium/issues/21801). | Review the section for workarounds. | June 27, 2024 | Packs, Clusters, Edge | +| [Sonobuoy](../clusters/cluster-management/compliance-scan.md#conformance-testing) scans fail to generate reports on airgapped Palette Edge clusters. | No workaround is available. | June 24, 2024 | Edge | +| Clusters configured with OpenID Connect (OIDC) at the Kubernetes layer encounter issues when authenticating with the [non-admin Kubeconfig file](../clusters/cluster-management/kubeconfig.md#cluster-admin). Kubeconfig files using OIDC to authenticate will not work if the SSL certificate is set at the OIDC provider level. | Use the admin Kubeconfig file to authenticate with the cluster, as it does not use OIDC to authenticate. | June 21, 2024 | Clusters | +| During the platform upgrade from Palette 4.3 to 4.4, Virtual Clusters may encounter a scenario where the pod `palette-controller-manager` is not upgraded to the newer version of Palette. The virtual cluster will continue to be operational, and this does not impact its functionality. | Refer to the [Controller Manager Pod Not Upgraded](../troubleshooting/palette-dev-engine.md#scenario---controller-manager-pod-not-upgraded) troubleshooting guide. | June 15, 2024 | Virtual Clusters | +| Edge hosts with FIPS-compliant RHEL Operating System (OS) distribution may encounter the error where the `systemd-resolved.service` service enters the **failed** state. This prevents the nameserver from being configured, which will result in cluster deployment failure. | Refer to [TroubleShooting](../troubleshooting/edge.md#scenario---systemd-resolvedservice-enters-failed-state) for a workaround. | June 15, 2024 | Edge | +| The GKE cluster's Kubernetes pods are failing to start because the Kubernetes patch version is unavailable. This is encountered during pod restarts or node scaling operations. | Deploy a new cluster and use a GKE cluster profile that does not contain a Kubernetes pack layer with a patch version. Migrate the workloads from the existing cluster to the new cluster. This is a breaking change introduced in Palette 4.4.0 | June 15, 2024 | Packs, Clusters | +| does not support multi-node control plane clusters. The upgrade strategy, `InPlaceUpgrade`, is the only option available for use. | No workaround is available. | June 15, 2024 | Packs | +| Clusters using as the Kubernetes distribution, the control plane node fails to upgrade when using the `InPlaceUpgrade` strategy for sequential upgrades, such as upgrading from version 1.25.x to version 1.26.x and then to version 1.27.x. | Refer to the [Control Plane Node Fails to Upgrade in Sequential MicroK8s Upgrades](../troubleshooting/pack-issues.md) troubleshooting guide for resolution steps. | June 15, 2024 | Packs | +| Azure IaaS clusters are having issues with deployed load balancers and ingress deployments when using Kubernetes versions 1.29.0 and 1.29.4. Incoming connections time out as a result due to a lack of network path inside the cluster. Azure AKS clusters are not impacted. | Use a Kubernetes version lower than 1.29.0 | June 12, 2024 | Clusters | +| OIDC integration with Virtual Clusters is not functional. All other operations related to Virtual Clusters are operational. | No workaround is available. | Jun 11, 2024 | Virtual Clusters | +| Deploying self-hosted Palette or VerteX to a vSphere environment fails if vCenter has standalone hosts directly under a Datacenter. Persistent Volume (PV) provisioning fails due to an upstream issue with the vSphere Container Storage Interface (CSI) for all versions before v3.2.0. Palette and VerteX use the vSphere CSI version 3.1.2 internally. The issue may also occur in workload clusters deployed on vSphere using the same vSphere CSI for storage volume provisioning. | If you encounter the following error message when deploying self-hosted Palette or VerteX: `'ProvisioningFailed failed to provision volume with StorageClass "spectro-storage-class". Error: failed to fetch hosts from entity ComputeResource:domain-xyz` then use the following workaround. Remove standalone hosts directly under the Datacenter from vCenter and allow the volume provisioning to complete. After the volume is provisioned, you can add the standalone hosts back. You can also use a service account that does not have access to the standalone hosts as the user that deployed Palette. | May 21, 2024 | Self-Hosted | +| Conducting cluster node scaling operations on a cluster undergoing a backup can lead to issues and potential unresponsiveness. | To avoid this, ensure no backup operations are in progress before scaling nodes or performing other cluster operations that change the cluster state | April 14, 2024 | Clusters | +| Palette automatically creates an AWS security group for worker nodes using the format `-node`. If a security group with the same name already exists in the VPC, the cluster creation process fails. | To avoid this, ensure that no security group with the same name exists in the VPC before creating a cluster. | April 14, 2024 | Clusters | +| K3s version 1.27.7 has been marked as _Deprecated_. This version has a known issue that causes clusters to crash. | Upgrade to a newer version of K3s to avoid the issue, such as versions 1.26.12, 1.28.5, and 1.27.11. You can learn more about the issue in the [K3s GitHub issue](https://github.com/k3s-io/k3s/issues/9047) page. | April 14, 2024 | Packs, Clusters | +| When deploying a multi-node AWS EKS cluster with the Container Network Interface (CNI) , the cluster deployment fails. | A workaround is to use the AWS VPC CNI in the interim while the issue is resolved. | April 14, 2024 | Packs, Clusters | +| If a Kubernetes cluster deployed onto VMware is deleted, and later re-created with the same name, the cluster creation process fails. The issue is caused by existing resources remaining inside the PCG, or the System PCG, that are not cleaned up during the cluster deletion process. | Refer to the [VMware Resources Remain After Cluster Deletion](../troubleshooting/pcg.md#scenario---vmware-resources-remain-after-cluster-deletion) troubleshooting guide for resolution steps. | April 14, 2024 | Clusters | +| In a VMware environment, self-hosted Palette instances do not receive a unique cluster ID when deployed, which can cause issues during a node repave event, such as a Kubernetes version upgrade. Specifically, Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) will experience start problems due to the lack of a unique cluster ID. | To resolve this issue, refer to the [Volume Attachment Errors Volume in VMware Environment](../troubleshooting/palette-upgrade.md#volume-attachment-errors-volume-in-vmware-environment) troubleshooting guide. | April 14, 2024 | Self-Hosted | +| Day-2 operations related to infrastructure changes, such as modifying the node size and count, when using MicroK8s are not taking effect. | No workaround is available. | April 14, 2024 | Packs, Clusters | +| If a cluster that uses the Rook-Ceph pack experiences network issues, it's possible for the file mount to become and remain unavailable even after the network is restored. | This a known issue disclosed in the [Rook GitHub repository](https://github.com/rook/rook/issues/13818). To resolve this issue, refer to pack documentation. | April 14, 2024 | Packs, Edge | +| Edge clusters on Edge hosts with ARM64 processors may experience instability issues that cause cluster failures. | ARM64 support is limited to a specific set of Edge devices. Currently, Nvidia Jetson devices are supported. | April 14, 2024 | Edge | +| During the cluster provisioning process of new edge clusters, the Palette webhook pods may not always deploy successfully, causing the cluster to be stuck in the provisioning phase. This issue does not impact deployed clusters. | Review the [Palette Webhook Pods Fail to Start](../troubleshooting/edge.md#scenario---palette-webhook-pods-fail-to-start) troubleshooting guide for resolution steps. | April 14, 2024 | Edge | ## Resolved Known Issues diff --git a/docs/docs-content/release-notes/release-notes.md b/docs/docs-content/release-notes/release-notes.md index 37a976ef39..eaeaa0a494 100644 --- a/docs/docs-content/release-notes/release-notes.md +++ b/docs/docs-content/release-notes/release-notes.md @@ -11,6 +11,161 @@ tags: ["release-notes"] +## Aug 17, 2024 - Release 4.4.14 + + + +This release is specific to Palette Enterprise and does not apply to Palette VerteX. + +### Palette Enterprise {#release-4-4-14} + +#### Breaking Changes + +- The Palette CLI no longer has the `validator` command. To validate your self-hosted Palette or VerteX deployment, use + the `ec` command instead with the `--validate` flag. Refer to the + [Validate Environment](../automation/palette-cli/commands/ec.md#validate-environment) section of the Palette EC + command documentation to learn more. + +- The `nodeDrainTimeout` parameter for clusters has been changed from 10 minutes from the previous Palette version to + infinite. + + - New clusters will have an infinite `nodeDrainTimeout` upon creation. + - Existing clusters will retain their existing `nodeDrainTimeout` until there is a new machine created in cluster + through scaling, upgrading, or repaving, or when a worker node pool is added or scaled out. + + If any pods fail to be drained, they will be stuck in the draining process and would require manual intervention. + +#### Features + +- This release introduces new filter options to improve the pack selection experience within Palette. Users can now + easily filter packs by **Verified** and **FIPS Compliant** status using toggles, facilitating quicker and more + efficient pack searches and selections. + +- A new API endpoint now allows users to update both DNS hosts and SSL certificates simultaneously in Palette. This + update addresses user-reported issues related to circular dependencies when updating DNS hosts and certificates + separately. The change will also be reflected in the UI by merging DNS and certificate update functionalities onto a + single page, enhancing user experience and functionality validation. + +- The VMO airgap binary has moved out of Preview status into Production-ready state. + +#### Improvements + +- Improvements made to Palette reduced resource usage and improved the reliability and responsiveness of the cluster + management. + +- Reduced latency in permission resolution, especially for users with access to a large number of projects. + +- Reduced CPU and memory consumption within the pods and enhanced overall system performance during machine health + updates. + +#### Fixes + +- Fixed an issue that sometimes caused CSI errors if there are multiple instances of self-hosted Palette or VerteX in a + single vSphere environment. + +### Edge + +#### Features + +- This release introduces a validation tool for the install configuration **user-data** for Edge hosts. Errors in + **user-data** files can lead to significant delays and troubleshooting efforts. This feature validates the user-data + file for both YAML formatting and schema compliance during build time to catch issues earlier. For more information, + refer to [Validate User Data](../clusters/edge/edgeforge-workflow/validate-user-data.md). + +- This release introduces file download support within Local UI, which allows users to write files to a fixed path on + the Edge host and download them from Local UI. Previously, gathering files from Edge hosts required elevated + privileges and could be error-prone when executed manually. For more information, refer to + [Download Files from Local UI](../clusters/edge/local-ui/host-management/download-files.md). + +- Palette agent on Edge hosts will now produce audit logs. This capability captures timestamped records for a variety of + events, including authentication attempts, configuration changes, and cluster management activities. In addition, you + can program your own applications to send logs to the same location, and have Local UI display those log entries. For + more information, refer to [Configure Audit Logs](../clusters/edge/local-ui/host-management/audit-logs.md). + +- Local UI displays progress and status during cluster deployment. Users can now monitor key milestones in real-time + during the creation and updating of Edge clusters. + +### Packs + +#### Kubernetes Packs + +| Pack | New Version | +| ------------------------------------------ | ----------- | +| K3s | 1.27.16 | +| K3s | 1.28.12 | +| K3s | 1.29.7 | +| Palette eXtended Kubernetes (PXK) | 1.27.16 | +| Palette eXtended Kubernetes (PXK) | 1.28.12 | +| Palette eXtended Kubernetes (PXK) | 1.29.7 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.27.16 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.28.12 | +| Palette eXtended Kubernetes - Edge (PXK-E) | 1.29.7 | +| RKE2 | 1.27.15 | +| RKE2 | 1.28.11 | +| RKE2 | 1.29.6 | +| RKE2 FIPS | 1.27.15 | + +#### CNI + +| Pack | New Version | +| ------ | ----------- | +| Cilium | 1.15.7 | + +#### CSI + +| Pack | New Version | +| ----------- | ----------- | +| Azure Disk | 1.30.1 | +| AWS EBS | 1.33.0 | +| VSphere CSI | 3.3.0 | + +#### FIPS + +| Pack | New Version | +| ---------------------------------- | ----------- | +| Longhorn | 1.6.2 | +| Palette eXtended Kubernetes - FIPS | 1.27.16 | +| Palette eXtended Kubernetes - FIPS | 1.28.12 | +| Palette eXtended Kubernetes - FIPS | 1.29.7 | + +#### Add-on Packs + +| Pack | New Version | +| ---------- | ----------- | +| MetalLB | 0.14.5 | +| Prometheus | 58.6.0 | + +### Automation + +#### Features + +- A new tool for building CAPI images is now available. The CAPI Image Builder reduces the challenges associated with + creating images for Kubernetes clusters. It is based on the upstream + [Kubernetes Image Builder (KIB)](https://image-builder.sigs.k8s.io/introduction.html) project and includes all the + dependencies required to build FIPS and non-FIPS images within a Docker container. For more information, refer to + [CAPI Image Builder](../byoos/capi-image-builder/capi-image-builder.md). + +#### Improvements + +- Users receive a clear warning message in the terminal after issuing the `terraform plan` command if actions would + result in a cluster repave. Previously, this notification was not available in Terraform-managed environments, leading + to potential oversight by users. + +### Virtual Machine Orchestrator + +#### Features + +- The Virtual Machine Orchestrator (VMO) pack is now available for use in tenants that belong to your airgapped instance + of Palette. For more information, refer to + [Install VMO in Airgap Environments](../vm-management/install-vmo-in-airgap.md). + +### Docs and Education + +Palette's Go SDK now has a dedicated documentation section. The new section also includes a guide on how to install, +configure, and use the SDK. This guide provides instructions and sample code for listing the active clusters in your +Palette environment. Check out the [Palette Go SDK documentation](../automation/palette-sdk/palette-sdk.md) for more +details. + ## Jul 31, 2024 - Release 4.4.12 #### Bug Fixes @@ -22,7 +177,7 @@ tags: ["release-notes"] -### Palette {#release-4-4-8} +### Palette Enterprise {#release-4-4-8} #### Features @@ -235,7 +390,7 @@ features and improvements. - Review the [Security Bulletins](../security-bulletins/security-bulletins.md) page for the latest security advisories. -### Palette +### Palette Enterprise #### Breaking Changes @@ -247,8 +402,7 @@ features and improvements. - Validator Helm Charts have migrated from `https://github.com/spectrocloud-labs/validator` to `https://github.com/validator-labs/validator`. Former versions of the Palette CLI will point to the former repository when prompted for the Helm chart location and require a manual URL change. The new version of the Palette CLI will - point to the new repository. Refer to the [Validator](../automation/palette-cli/commands/validator.md) CLI page - documentation for more details. + point to the new repository. - Due to the removal of GKE Kubernetes patch versions, it's critical you update existing cluster profiles to use the new GKE Kubernetes packs to avoid issues. Active clusters using old GKE Kubernetes pack versions may encounter problems diff --git a/docs/docs-content/security-bulletins/reports/reports.md b/docs/docs-content/security-bulletins/reports/reports.md index a0ae5a5ff1..d0b23a3bbf 100644 --- a/docs/docs-content/security-bulletins/reports/reports.md +++ b/docs/docs-content/security-bulletins/reports/reports.md @@ -81,7 +81,7 @@ Click on the CVE ID to view the full details of the vulnerability. | [CVE-2023-27534](./cve-2023-27534.md) | 08/16/24 | 08/16/24 | Palette 4.4.12 | Third-party component: MongoDB | [8.8](https://nvd.nist.gov/vuln/detail/CVE-2023-27534) | :mag: Ongoing | | [CVE-2023-32636](./cve-2023-32636.md) | 08/16/24 | 08/16/24 | Palette 4.4.12 | Third-party component: MongoDB | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-32636) | :mag: Ongoing | | [CVE-2023-29499](./cve-2023-29499.md) | 08/16/24 | 08/16/24 | Palette 4.4.12 | Third-party component: MongoDB | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2023-29499) | :mag: Ongoing | -| [CVE-2024-24790](./cve-2024-24790.md) | 8/6/24 | 8/6/24 | Palette 4.4.11 | Third-party component: Go Project | [9.8](https://nvd.nist.gov/vuln/detail/CVE-2024-24790) | :mag: Ongoing | +| [CVE-2024-24790](./cve-2024-24790.md) | 8/6/24 | 8/6/24 | Palette 4.4.11 & 4.4.12 | Third-party component: Go Project | [9.8](https://nvd.nist.gov/vuln/detail/CVE-2024-24790) | :mag: Ongoing | | [CVE-2023-4156](./cve-2023-4156.md) | 08/16/24 | 08/16/24 | Palette 4.4.12 | Third-party component: MongoDB | [7.1](https://nvd.nist.gov/vuln/detail/CVE-2023-4156) | :mag: Ongoing | | [CVE-2022-23990](./cve-2022-23990.md) | 08/16/24 | 08/16/24 | Palette 4.4.12 | Third-party component: MongoDB | [7.5](https://nvd.nist.gov/vuln/detail/CVE-2022-23990) | :mag: Ongoing | | [CVE-2020-35512](./cve-2020-35512.md) | 08/16/24 | 08/16/24 | Palette 4.4.12 | Third-party component: MongoDB | [7.8](https://nvd.nist.gov/vuln/detail/CVE-2020-35512) | :mag: Ongoing | diff --git a/docs/docs-content/spectro-downloads.md b/docs/docs-content/spectro-downloads.md index 3ddcb18cef..f770b3437f 100644 --- a/docs/docs-content/spectro-downloads.md +++ b/docs/docs-content/spectro-downloads.md @@ -30,7 +30,10 @@ the [Palette CLI](./automation/palette-cli/palette-cli.md) document for installa ## Palette Edge CLI -| Version | Operating System | Checksum (SHA256) | -| ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | -| 4.4.7 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.7/cli/linux/palette-edge) | `fb961fd91cfb2b8235f467dfbc7ee06efe0d94184a42f2f3b9a0c8534ad7b797` | -| 4.4.6 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.6/cli/linux/palette-edge) | `6bf798ce0fc1910cfb0ad3b5e2d949d46fa7d1948372120cc82ae323b14898aa` | +| Version | Operating System | Checksum (SHA256) | +| ------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | +| 4.4.8 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.8/cli/linux/palette-edge) | `380df5d7037e962c2984070b54ce005f849158819545a2f25f24b9d2f5dd6cca1` | +| 4.4.7 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.7/cli/linux/palette-edge) | `fb961fd91cfb2b8235f467dfbc7ee06efe0d94184a42f2f3b9a0c8534ad7b797` | +| 4.4.6 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.6/cli/linux/palette-edge) | `6bf798ce0fc1910cfb0ad3b5e2d949d46fa7d1948372120cc82ae323b14898aa` | +| 4.4.4 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.4/cli/linux/palette-edge) | `3dae63e503251ff0d8a85c596cddf9c45ac29ca341d0f4d47756c865121fcdb9` | +| 4.4.2 | [Linux-amd64](https://software.spectrocloud.com/stylus/v4.4.2/cli/linux/palette-edge) | `86d2f9239d2b8517dc6d750631a3a328136a5d49a8ec042899879e9bd25a396e` | diff --git a/docs/docs-content/troubleshooting/nodes.md b/docs/docs-content/troubleshooting/nodes.md index d43485a834..597a7bc29e 100644 --- a/docs/docs-content/troubleshooting/nodes.md +++ b/docs/docs-content/troubleshooting/nodes.md @@ -12,7 +12,7 @@ This page covers common debugging scenarios for nodes and clusters after they ha ## Nodes -## Scenario - Repaved Nodes +### Scenario - Repaved Nodes Palette performs a rolling upgrade on nodes when it detects a change in the `kubeadm` config. Below are some actions that cause the `kubeadm` configuration to change and result in nodes being upgraded: @@ -48,9 +48,11 @@ resulted in a node repave. The API payload is incomplete for brevity. For detailed information, review the cluster upgrades [page](../clusters/clusters.md). +### + ## Clusters -## Scenario - Incorrect LoadBalancer `kubernetes` Created by Azure Cloud Controller Manager +### Scenario - Incorrect LoadBalancer `kubernetes` Created by Azure Cloud Controller Manager The `cloud-controller-manager` introduced in Azure Kubernetes v.1.29.x can make your existing external service IP inaccessible. This issue occurs because `cloud-controller-manager` creates a default load balancer named `kubernetes` @@ -60,7 +62,7 @@ While this issue has been resolved for Palette-managed Azure clusters, you need created `kubernetes` load balancer and the associated public IP address from the Azure resource group to which your cluster was deployed. -### Debug Steps +#### Debug Steps 1. Open a terminal session and use the following command to authenticate your Azure CLI session. @@ -112,7 +114,7 @@ cluster was deployed. az network public-ip delete --name kubernetes- --resource-group ``` -## Scenario - vSphere Cluster and Stale ARP Table +### Scenario - vSphere Cluster and Stale ARP Table Sometimes vSphere clusters encounter issues where nodes with an assigned Virtual IP Address (VIP) cannot contact the node with a VIP. The problem is caused by Address Resolution Protocol (ARP) entries becoming stale on non-VIP nodes. @@ -128,14 +130,14 @@ is never older than 300 seconds. watch ip -statistics neighbour ``` -## EKS Cluster Worker Pool Failures +### EKS Cluster Worker Pool Failures If your EKS cluster worker pool ends up in `Failed`, `Create Failed` or `Error nodes failed to join` state, refer to the Amazon EKS [Runbook](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshooteksworkernode.html) for troubleshooting guidance. -## Palette Agents Workload Payload Size Issue +### Palette Agents Workload Payload Size Issue A cluster comprised of many nodes can create a situation where the workload report data the agent sends to Palette exceeds the 1 MB threshold and fails to deliver the messages. If the agent encounters too many workload report @@ -155,13 +157,13 @@ data: feature.workloads: disable ``` -## OS Patch Fails +### OS Patch Fails When conducting [OS Patching](../clusters/cluster-management/os-patching.md), sometimes the patching process can time out and fail. This issue is due to some OS patches requiring GRUB packages. GRUB updates often require user prompts, and if a user prompt is required during the OS patching process, the patching process will fail. -### Debug Steps +#### Debug Steps To resolve this issue, use the following steps: @@ -216,3 +218,53 @@ To resolve this issue, use the following steps: ::: 9. Repeat the previous step for all nodes in the cluster. + +### OS Patch Fails on AWS with Microk8s 1.27 + +If OS patching fails on an AWS cluster with Microk8s 1.27, use the following debug steps to resolve the issue. + +#### Debug Steps + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. Navigate to the left **Main Menu** and select **Clusters**. + +3. Select the cluster that is experiencing the issue and click on its row to access the cluster details page. + +4. From the cluster details page, select the **Nodes** tab. + +5. Click on a cluster node to access its details page. Review the network information, such as the subnet and the + network the node is in. + +6. Log in to the infrastructure provider console and acquire the node IP address. + +7. SSH into one of the cluster nodes + +8. Find out the partition name to which `boot/efi` is mounted with the following command. + + ``` + mount | grep /boot/efi + ``` + + The command produces output similar to the following. + + ``` + /dev/xvda15 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) + ``` + + The name of the partition is the partition at the start of the line before `on /boot/efi`: `/dev/xvda15` + +9. Issue the following command. Replace `partition-name` with the name of the partition. + + ```shell + grub-install --efi-directory=/boot/efi --force + ``` + +10. Issue the following commands. + + ``` + grub-mkconfig -o /boot/grub/grub.cfg + update-grub + apt-get update + apt-get upgrade + ``` diff --git a/docs/docs-content/vertex/fips/fips-status-icons.md b/docs/docs-content/vertex/fips/fips-status-icons.md index 69257571b4..0d232cfa75 100644 --- a/docs/docs-content/vertex/fips/fips-status-icons.md +++ b/docs/docs-content/vertex/fips/fips-status-icons.md @@ -34,20 +34,21 @@ and profiles because these may contain packs with an _Unknown_ or _Not FIPS-comp The screenshots below show how Palette VerteX applies FIPS status icons. -When you create a profile, icons display next to packs. +:::tip -![Diagram showing FIPS status icons on profile page.](/vertex_fips-status-icons_icons-on-profile-page.webp) +When creating a cluster profile, you can filter packs by checking the **FIPS Compliant** checkbox to display only +FIPS-compliant packs. + +::: - +When you create a profile, icons display next to packs. -
+![Diagram showing FIPS status icons on profile page.](/vertex_fips-status-icons_icons-on-profile-page.webp) Icons appear next to each profile layer to indicate FIPS compliance. ![Diagram showing FIPS-compliant icons in profile stack.](/vertex_fips-status-icons_icons-in-profile-stack.webp) -
- In this screenshot, Palette VerteX shows FIPS status for the cluster is partially compliant because one pack in the profile is not FIPS-compliant. diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md index 5c88e31023..9aec39d3fe 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/checklist.md @@ -22,7 +22,7 @@ installation. - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../../byoos/usecases/vmware/rhel-pxk.md) guide. + to the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. - [ ] Import the Operating System and Kubernetes distribution OVA required for the installation and place the OVA in the `spectro-templates` folder. diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md index a0e9918c3b..81209d2226 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/airgap-install/install.md @@ -38,7 +38,7 @@ before proceeding with the installation. Refer to the - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../../byoos/usecases/vmware/rhel-pxk.md) guide. + to the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::warning @@ -155,10 +155,10 @@ Use the following steps to install Palette VerteX. 7. Select the desired OS you want to use for the installation. Review the table below for more information about each option. - | **Option** | **Description** | **Requirements** | - | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-2 certified cryptographic packages. | Ubuntu Pro token. | - | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../byoos/usecases/vmware/rhel-pxk.md) to learn how to create the required template. | + | **Option** | **Description** | **Requirements** | + | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-2 certified cryptographic packages. | Ubuntu Pro token. | + | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | 8. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will need to provide your Ubuntu Pro token. For Red Hat Linux Enterprise, you will need to provide the path to the diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md index 29968d3edc..554330c7c6 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/install.md @@ -38,7 +38,7 @@ for more information. - [Red Hat Linux Enterprise](https://www.redhat.com/en) - you need a Red Hat subscription and a custom RHEL vSphere template with Kubernetes available in your vSphere environment. To learn how to create the required template, refer - to the [RHEL and PXK](../../../byoos/usecases/vmware/rhel-pxk.md) guide. + to the [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::warning @@ -166,10 +166,10 @@ Use the following steps to install Palette VerteX. 7. Select the desired OS you want to use for the installation. Review the table below for more information about each option. - | **Option** | **Description** | **Requirements** | - | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-2 certified cryptographic packages. | Ubuntu Pro token. | - | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../byoos/usecases/vmware/rhel-pxk.md) to learn how to create the required template. | + | **Option** | **Description** | **Requirements** | + | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Ubuntu Pro** | [Ubuntu Pro](https://ubuntu.com/pro) is the default option. It provides access to FIPS 140-2 certified cryptographic packages. | Ubuntu Pro token. | + | **Red Hat Linux Enterprise** | Red Hat Linux Enterprise provides access to Red Hat Enterprise Linux. | Red Hat subscription and a custom RHEL vSphere template with Kubernetes. Review the [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) to learn how to create the required template. | 8. Depending on your OS selection, you will be prompted to provide the required information. For Ubuntu Pro, you will need to provide your Ubuntu Pro token. For Red Hat Linux Enterprise, you will need to provide the path to the diff --git a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md index 56f6d34107..0eca1c7636 100644 --- a/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md +++ b/docs/docs-content/vertex/install-palette-vertex/install-on-vmware/vmware-system-requirements.md @@ -26,7 +26,7 @@ Start by reviewing the required action items below: 4. If you are deploying VerteX with Red Hat Enterprise Linux (RHEL). Ensure you create a custom image containing your RHEL subscription credentials and the desired Kubernetes version. This image template must be uploaded to the vSphere `spectro-templates` folder. Instructions for creating the custom RHEL image with Kubernetes are available in the - [RHEL and PXK](../../../byoos/usecases/vmware/rhel-pxk.md) guide. + [RHEL and PXK](../../../byoos/image-builder/build-image-vmware/rhel-pxk.md) guide. :::info diff --git a/docs/docs-content/vertex/system-management/ssl-certificate-management.md b/docs/docs-content/vertex/system-management/ssl-certificate-management.md index 601a84ec31..f275de2277 100644 --- a/docs/docs-content/vertex/system-management/ssl-certificate-management.md +++ b/docs/docs-content/vertex/system-management/ssl-certificate-management.md @@ -1,7 +1,7 @@ --- -sidebar_label: "SSL Certificate Management" -title: "SSL Certificate" -description: "Upload and manage SSL certificates in Palette VerteX." +sidebar_label: "System Address Management" +title: "System Address Management" +description: "Manage system address and SSL certificates in Palette." icon: "" hide_table_of_contents: false sidebar_position: 70 @@ -13,16 +13,30 @@ Palette VerteX uses Secure Sockets Layer (SSL) certificates to secure internal a Transfer Protocol Secure (HTTPS). External VerteX endpoints, such as the [system console](../system-management/system-management.md#system-console), [VerteX dashboard](../../getting-started/dashboard.md), the VerteX API, and the gRPC endpoint, are enabled by default -with HTTPS using an auto-generated self-signed certificate. You can replace the self-signed certificate with your SSL -certificate to secure these endpoints. +with HTTPS using an auto-generated self-signed certificate. + +## Update System Address and Certificates + +The Palette VerteX system console allows you to replace the self-signed certificate with a custom SSL certificate to +secure these endpoints. Additionally, you can update the system address, which is the Fully Qualified Domain Name (FQDN) +that you use to access your Palette installation. The system address and certificates may be updated simultaneously. :::info -You can swap out the external endpoint certificate at any time without affecting the system functionality. +Palette VerteX validates the combination of system address, certificate, key, and Certificate Authority (CA). Ensure +that the certificate is not expired, as well as that it is valid for the CA and the system address. Additionally, the +system address must be accessible from the system console. + +::: + +:::warning + +You can swap out the external endpoint certificate at any time without affecting the system functionality. However, +updating the system address may require manual reconciliation on deployed clusters. ::: -## Prerequisites +### Prerequisites - Access to the Palette VerteX system console. @@ -33,39 +47,104 @@ You can swap out the external endpoint certificate at any time without affecting you did not specify a custom domain name, the certificate must be created for the Palette VerteX system console's IP address. You can also specify a load balancer's IP address if you are using a load balancer to access Palette VerteX. -## Enablement +### Enablement -You can upload an SSL certificate in Palette VerteX by using the following steps. +You can update your Palette system address and SSL certificates by using the following steps. 1. Log in to the Palette VerteX system console. 2. Navigate to the left **Main Menu** and select **Administration**. -3. Select the tab titled **Certificates**. +3. Select the **System Address** tab. + +4. Update your Palette domain in the **System Address (UI and API)** field. + +5. Copy and paste the certificate into the **Certificate** field. -4. Copy and paste the certificate into the **Certificate** field. +6. Copy and paste the certificate key into the **Key** field. -5. Copy and paste the certificate key into the **Key** field. +7. Copy and paste the certificate authority into the **Certificate Authority** field. -6. Copy and paste the certificate authority into the **Certificate authority** field. + ![A view of the certificate upload screen](/palette_system-management_ssl-certificate-management_system-address.webp) - ![A view of the certificate upload screen](/vertex_system-management_ssl-certifiacte-management_certificate-upload.webp) +8. Click **Update** to save your changes. -7. Save your changes. +9. If you have any clusters deployed, you may need to reconcile the updated system address for each cluster. Refer to + [Reconcile System Address on Deployed Clusters](#reconcile-system-address-on-deployed-clusters) for more information. -If the certificate is invalid, you will receive an error message. Once the certificate is uploaded successfully, Palette -VerteX will refresh its listening ports and start using the new certificate. +You will receive an error message if the provided values are not valid. Once the certificate is uploaded successfully, +Palette VerteX will refresh its listening ports and start using the newly configured values. -## Validate +### Validate You can validate that your certificate is uploaded correctly by using the following steps. -1. Log out of the Palette VerteX system console. If you are already logged in, log out and close your browser session. - Browsers cache connections and may not use the newly enabled HTTPS connection. Closing your existing browser session - avoids issues related to your browser caching an HTTP connection. +1. Log out of the Palette VerteX system console. If you are already logged in, log out and close your browser session. + Browsers cache connections and may not use the newly enabled HTTPS connection. Closing your existing browser session + avoids issues related to your browser caching an HTTP connection. -2. Log back into the Palette VerteX system console. Ensure the connection is secure by checking the URL. The URL should - start with `https://`. +2. Log back into the Palette VerteX system console. Ensure the connection is secure by checking the URL. The URL should + start with `https://`. VerteX is now using your uploaded certificate to create a secure HTTPS connection with external clients. Users can now securely access the system console, VerteX dashboard, the gRPC endpoint, and the VerteX API endpoint. + +## Reconcile System Address on Deployed Clusters + +Once you have updated your system address, the clusters that were deployed before the update will not be able to +automatically reconnect to Palette if the old system address is no longer available. You will need to manually update +the API endpoint on each cluster if this is the case. This enables the Palette agent to reconnect to the API at the +newly configured system address. + +### Prerequisites + +- Palette VerteX access with a configured cloud account. + +- A cluster deployed prior to the system address update. Refer to the [Clusters](../../clusters/clusters.md) section for + further guidance. + +- `kubectl` installed. Use the Kubernetes [Install Tools](https://kubernetes.io/docs/tasks/tools/) page for further + guidance. + +### Enablement + +1. Log into Palette VerteX using the configured system address. + +2. Navigate to the left **Main Menu** and select **Clusters**. Palette displays your deployed clusters. The clusters + that have the **Unknown** status need to be manually updated. + +3. Select your cluster from the **Clusters** list. The cluster **Overview** tab displays. + +4. Download the kubeconfig file. This file allows you to connect to your deployed cluster. Check out the + [Kubeconfig](../../clusters/cluster-management/kubeconfig.md) page to learn more. +5. Open a terminal window and set the environment variable `KUBECONFIG` to point to the file you downloaded. + + ```shell + export KUBECONFIG= + ``` + +6. Execute the following command in your terminal to view the cluster namespaces. Make a note of the cluster namespace + that Palette has created. Its name follows the pattern **cluster-id**. + + ```shell + kubectl get namespaces + ``` + +7. Palette uses ConfigMaps to save its configuration and environment variables. Update the `apiEndpoint` value in the + `hubble-info` ConfigMap to use the newly configured system address. + + ```shell + kubectl edit configmap hubble-info --namespace + ``` + +8. Save your changes and exit the editor. + +Repeat these steps for each cluster that has the **Unknown** status. + +### Validate + +1. Log into Palette VerteX using the configured system address. + +2. Navigate to the left **Main Menu** and select **Clusters**. + +3. Palette VerteX successfully displays the status of your clusters. None of your clusters has the **Unknown** status. diff --git a/docs/docs-content/vertex/upgrade/upgrade.md b/docs/docs-content/vertex/upgrade/upgrade.md index 1be9726341..8b6552b2d4 100644 --- a/docs/docs-content/vertex/upgrade/upgrade.md +++ b/docs/docs-content/vertex/upgrade/upgrade.md @@ -32,6 +32,9 @@ Before upgrading Palette VerteX to a new major version, you must first update it | **Source Version** | **Target Version** | **Support** | | :----------------: | :----------------: | :----------------: | +| 4.4.11 | 4.4.14 | :white_check_mark: | +| 4.4.6 | 4.4.14 | :white_check_mark: | +| 4.3.6 | 4.4.14 | :white_check_mark: | | 4.4.6 | 4.4.11 | :white_check_mark: | | 4.3.6 | 4.4.11 | :white_check_mark: | | 4.3.6 | 4.4.x | :white_check_mark: | diff --git a/docs/docs-content/vm-management/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md index 0086d158f3..b62669f279 100644 --- a/docs/docs-content/vm-management/create-vmo-profile.md +++ b/docs/docs-content/vm-management/create-vmo-profile.md @@ -4,7 +4,7 @@ title: "Create a VMO Profile" description: "Learn how to create a cluster profile to utilize Palette Virtual Machine Orchestrator capabilities." icon: " " hide_table_of_contents: false -sidebar_position: 10 +sidebar_position: 20 tags: ["vmo"] --- @@ -26,13 +26,37 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./ ## Prerequisites + + + + - A Palette permission key `create` for the resource `clusterProfile`. -- If you are creating an Edge cluster profile, your profile must have a Container Storage Interface (CSI) pack. + + + + +- A Palette permission key `create` for the resource `clusterProfile`. + +- Your Edge cluster profile must have a Container Storage Interface (CSI) pack. + + + + + +- A Palette permission key `create` for the resource `clusterProfile`. + +- Ensure the VMO pack is installed in your airgap environment. Refer to the + [Install VMO in Airgap Environments](./install-vmo-in-airgap.md) guide for further information. + + + + ## Create the Profile - + + 1. Log in to [Palette](https://console.spectrocloud.com). @@ -165,12 +189,135 @@ profile configuration. To learn about pack components, refer to [Palette VMO](./ + + +1. Log in to a tenant that belongs to your instance of Palette or Palette VerteX. + +2. In the left **Main Menu**, select **Profiles** and click **Add Cluster Profile**. + +3. Enter basic information for the profile: name, version if desired, and optional description. + +4. Select type **Add-on**, and click **Next**. + +5. In the following screen, click **Add New Pack**. + +6. Locate the **Virtual Machine Orchestrator** pack and add it to your profile. + +7. Review the **Access** configuration panel on the right. The default setting is **Proxied**, which automatically adds + the **Spectro Proxy** pack when you create the cluster, allowing access to the Spectro VM Dashboard from anywhere. + Check out the guide to learn + more. + + The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired. + + :::warning + + We recommend using the pack defaults. Default settings provide best practices for your clusters. Changing the + default settings can introduce misconfigurations. Carefully review the changes you make to a pack. + + ::: + +8. Click **Values** in the **Pack Details** section. The pack manifest editor appears. Locate the + `pack.cdi.privateRegistry` section in the manifest. The table below contains a brief description of each field + exposed by the private registry. Set the `pack.cdi.privateRegistry.enabled` field to true and fill in the registry + IP address and base path according to your environment. This configures the VMO pack to pull images from your airgap + environment private registry. + + | Field | Description | + | ------------------------------------------- | -------------------------------------------------------------------- | + | `pack.cdi.privateRegistry.enabled` | Flag to enable the profile to use the airgap private image registry. | + | `pack.cdi.privateRegistry.registryIP` | The IP address the private image registry. | + | `pack.cdi.privateRegistry.registryBasePath` | The base path of the private image registry. | + + ```yaml + cdi: + privateRegistry: + enabled: true + registryIP: + registryBasePath: + ``` + +9. Click **Confirm & Create**. + +10. On the following screen, click **Next**. + +11. Review the profile and click **Finish Configuration**. + +12. Apply the profile to your cluster. For more information, refer to + [Create a Cluster](../clusters/public-cloud/deploy-k8s-cluster.md). + +:::info + +If you want to use direct access in an environment configured to use an external proxy, you must exclude your cluster's +load balancer IP range from proxy routing. Expand the following section to learn how you can configure your +environment's **No Proxy** list. + +
+ Configure the **No Proxy** list + + 1. Download the [Kubeconfig](../clusters/cluster-management/kubeconfig.md) file of the airgap support VM. + + 2. Open a terminal window and set the environment variable `KUBECONFIG` to point to the file you downloaded. + + ```shell + export KUBECONFIG= + ``` + + 3. Execute the following command to find the namespace which contains your environment proxy configuration. Make a note of the namespace. + + ```shell + kubectl get podpreset --all-namespaces --field-selector=metadata.name=proxy + ``` + + 4. Issue following command to edit the pod preset. Replace the placeholder with the namespace you identified previously. + + ```shell + kubectl edit podpreset proxy --namespace + ``` + + 5. Add your load balancer IP range to the `NO_PROXY` configuration under the `spec.env` section. + + ```yaml + env: + - name: NO_PROXY + value: "REPLACE ME" + ``` + + 6. Save your changes and close the editor. + + Your configuration changes are automatically applied. + +
+ + ::: + +
+
## Validate You can validate the profile is created. + + + + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. Navigate to **Profiles** from the left **Main Menu**. + +3. Locate the newly created profile in the list. + +4. From the left **Main Menu**, click **Clusters** and select your cluster. + +5. Based on your Single Sign-On (SSO) settings, the **Virtual Machines** tab may display on the **Cluster Overview** + page, or the **Connect** button may display next to **Virtual Machines Dashboard** in cluster details. + + + + + 1. Log in to [Palette](https://console.spectrocloud.com). 2. Navigate to **Profiles** from the left **Main Menu**. @@ -182,6 +329,25 @@ You can validate the profile is created. 5. Based on your Single Sign-On (SSO) settings, the **Virtual Machines** tab may display on the **Cluster Overview** page, or the **Connect** button may display next to **Virtual Machines Dashboard** in cluster details. + + + + +1. Log in to a tenant that belongs to your instance of Palette or Palette VerteX. + +2. Navigate to **Profiles** from the left **Main Menu**. + +3. Locate the newly created profile in the list. + +4. From the left **Main Menu**, click **Clusters** and select your cluster. + +5. Based on your Single Sign-On (SSO) settings, the **Virtual Machines** tab may display on the **Cluster Overview** + page, or the **Connect** button may display next to **Virtual Machines Dashboard** in cluster details. + + + + + ## Next Steps You will need to configure roles and role bindings to give users access to clusters. You can use VM user roles and diff --git a/docs/docs-content/vm-management/install-vmo-in-airgap.md b/docs/docs-content/vm-management/install-vmo-in-airgap.md new file mode 100644 index 0000000000..6b6a5fe68a --- /dev/null +++ b/docs/docs-content/vm-management/install-vmo-in-airgap.md @@ -0,0 +1,87 @@ +--- +sidebar_label: "Install VMO in Airgap Environments" +title: "Install VMO in Airgap Environments" +description: "Learn how to install VMO for use in self-hosted airgapped instances of Palette and Palette VerteX." +icon: " " +hide_table_of_contents: false +sidebar_position: 10 +tags: ["vmo"] +--- + +The Virtual Machine Orchestrator (VMO) pack is available for use in tenants that belong to your airgapped self-hosted +instance of Palette and Palette VerteX. + +## Prerequisites + +- An existing airgap instance of Palette or Palette VerteX. Refer to the + [Self-Hosted Palette Installation](../enterprise-version/install-palette/install-palette.md) and + [Palette VerteX Installation](../vertex/install-palette-vertex/install-palette-vertex.md) guides for more information. + + :::info + + If your environment is configured to use an external proxy, you can use the **No Proxy** list to exclude any domains + or IP addresses from proxying. You have the option to set the No Proxy list during the Palette installation flow. This + is useful in scenarios where you know the IP addresses you want to exclude before deployment, such as load balancer IP + addresses. + + ::: + +- At least one tenant created for your airgap instance of Palette or Palette VerteX. Refer to + [Tenant Management](../enterprise-version/system-management/tenant-management.md) for more information. + +- Access to the Palette airgap support Virtual Machine (VM) that you used for the initial Palette installation. + +- Access to the Palette system console. + +## Enablement + +1. In your terminal, use the following command template to SSH into the Palette airgap support VM. Enter the path to + your private SSH key, username, and the IP or domain of the airgap support VM. The default username is `ubuntu`. + + ```shell + ssh -identity_file @ + ``` + + Consider the following command example for reference. + + ```shell + ssh -identity_file /docs/ssh-private-key.pem ubuntu@palette.example.com + ``` + +2. Execute the following command to switch to the `root` user account. + + ```shell + sudo --login + ``` + +3. Refer to the [Palette Additional Packs](../enterprise-version/install-palette/airgap/supplemental-packs.md) page to + download and install the **airgap-pack-virtual-machine-orchestrator** and **airgap-pack-spectro-proxy** packs. + +4. If you are planning to deploy VMs with direct network access, repeat step three to install a load balancer pack of + your choice. We recommend installing + (**airgap-pack-lb-metallb**), which you can find in + [Palette Additional Packs](../enterprise-version/install-palette/airgap/supplemental-packs.md). + +5. Log in to the Palette system console. + +6. From the left **Main Menu**, select **Administration**, and then select the **Pack Registries** tab. + +7. Select the **three-dots Menu** of **spectro-packs** and click **Sync**. + + ![Palette system console displaying options for the spectro-packs registries.](/vm-management_install-vmo-in-airgap_sync-packs.webp) + + Once the sync is finished, the newly uploaded packs will be available for use in the tenants that belong to your + airgapped instance of Palette or Palette VerteX. + +## Validate + +1. Log in to a tenant that belongs to your airgapped instance of Palette or Palette VerteX. + +2. From the left **Main Menu**, select **Profiles** and click **Add Cluster Profile**. + +3. Follow the [Create a VMO Profile](./create-vmo-profile.md) guide to start creating a VMO add-on profile. + +4. If the Virtual Machine Orchestrator, Spectro Proxy, and, if applicable, your load balancer packs are available to add + to a cluster profile, then the installation is successful. + + ![Profile creation view with the uploaded packs for a self-hosted tenant.](/vm-management_install-vmo-in-airgap_validate-packs.webp) diff --git a/docs/docs-content/vm-management/vm-management.md b/docs/docs-content/vm-management/vm-management.md index d19fa9070d..8bc4a590ff 100644 --- a/docs/docs-content/vm-management/vm-management.md +++ b/docs/docs-content/vm-management/vm-management.md @@ -33,8 +33,9 @@ You will benefit from Palette VMO in the following cases: ## Get Started To get started with Palette VMO, review the [Architecture](./architecture.md) page to learn about the components -involved in enabling VMO for your infrastructure. Then, review the [Create a VMO Profile](./create-vmo-profile.md) guide -to prepare everything you need to deploy your first VMO cluster. +involved in enabling VMO for your infrastructure. If you want to use VMO in airgapped instances of self-hosted Palette +or Palette VerteX, review the [Install VMO in Airgap Environments](./install-vmo-in-airgap.md) guide. Then, review the +[Create a VMO Profile](./create-vmo-profile.md) guide to prepare everything you need to deploy your first VMO cluster. Once your VMO cluster is up and healthy, refer to the [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) section for information on deploying VMs from existing Palette templates and performing standard VM operations. @@ -48,6 +49,8 @@ and permissions for your VMs. - [Architecture](./architecture.md) +- [Install VMO in Airgap Environments](./install-vmo-in-airgap.md) + - [Create a VMO Profile](./create-vmo-profile.md) - [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) diff --git a/redirects.js b/redirects.js index 8343e554f1..fb86ab6765 100644 --- a/redirects.js +++ b/redirects.js @@ -474,7 +474,7 @@ const redirects = [ { from: "/palette-cli/commands/validator/", - to: "/automation/palette-cli/commands/validator/", + to: "/automation/palette-cli/commands/ec/", }, { from: "/user-management/palette-resource-limits/", @@ -517,6 +517,24 @@ const redirects = [ from: "/security-bulletins/cve-reports/", to: "/security-bulletins/reports/", }, + { + from: "/byoos/usecases/", + to: "/byoos/image-builder/build-image-vmware/", + }, + { + from: "/byoos/usecases/vmware/", + to: "/byoos/image-builder/build-image-vmware/", + }, + { + from: "/byoos/usecases/vmware/konvoy/", + to: "/byoos/image-builder/build-image-vmware/konvoy/", + }, + { + from: "/byoos/usecases/vmware/rhel-pxk/", + to: "/byoos/image-builder/build-image-vmware/rhel-pxk/", + from: "/automation/palette-cli/commands/validator/", + to: "/automation/palette-cli/commands/ec/", + }, { from: [ "/integrations/antrea-cni", diff --git a/static/assets/docs/images/integrations_verified-packs_add-pack.webp b/static/assets/docs/images/integrations_verified-packs_add-pack.webp index a0b44a1ffc..1c78beef3a 100644 Binary files a/static/assets/docs/images/integrations_verified-packs_add-pack.webp and b/static/assets/docs/images/integrations_verified-packs_add-pack.webp differ diff --git a/static/assets/docs/images/palette_system-management_ssl-certificate-management_system-address.webp b/static/assets/docs/images/palette_system-management_ssl-certificate-management_system-address.webp new file mode 100644 index 0000000000..4cd9c413ff Binary files /dev/null and b/static/assets/docs/images/palette_system-management_ssl-certificate-management_system-address.webp differ diff --git a/static/assets/docs/images/vm-management_install-vmo-in-airgap_sync-packs.webp b/static/assets/docs/images/vm-management_install-vmo-in-airgap_sync-packs.webp new file mode 100644 index 0000000000..a51bb58d0d Binary files /dev/null and b/static/assets/docs/images/vm-management_install-vmo-in-airgap_sync-packs.webp differ diff --git a/static/assets/docs/images/vm-management_install-vmo-in-airgap_validate-packs.webp b/static/assets/docs/images/vm-management_install-vmo-in-airgap_validate-packs.webp new file mode 100644 index 0000000000..533bc847d8 Binary files /dev/null and b/static/assets/docs/images/vm-management_install-vmo-in-airgap_validate-packs.webp differ