{ "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http", "https" ], "swagger": "2.0", "info": { "title": "Palette APIs - 4.4", "version": "v1" }, "paths": { "/v1/apiKeys": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of API keys", "operationId": "v1ApiKeysList", "responses": { "200": { "description": "Retrieves a list of API keys", "schema": { "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" } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Create an API key", "operationId": "v1ApiKeysCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } ], "responses": { "201": { "description": "APIKey Created successfully", "schema": { "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" } } } } } } }, "/v1/apiKeys/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified API key", "operationId": "v1ApiKeysUidGet", "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the specified API key", "operationId": "v1ApiKeysUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified API key", "operationId": "v1ApiKeysUidDelete", "responses": { "204": { "description": "The resource was deleted successfully" } } }, "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Activate or de-active the specified API key", "operationId": "v1ApiKeysUidActiveState", "parameters": [ { "name": "body", "in": "body", "schema": { "properties": { "isActive": { "description": "API key active state", "type": "boolean" } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "description": "Specify API key uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/apiKeys/{uid}/state": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Revoke or re-activate the API key access", "operationId": "v1ApiKeysUidState", "parameters": [ { "name": "body", "in": "body", "schema": { "properties": { "isActive": { "description": "API key active state", "type": "boolean" } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "description": "Specify API key uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appDeployments": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a application deployment in the virtual cluster", "operationId": "v1AppDeploymentsVirtualClusterCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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/appDeployments/clusterGroup": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a application deployment in one of virtual clusters in the cluster group", "operationId": "v1AppDeploymentsClusterGroupCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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/appDeployments/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application deployment", "operationId": "v1AppDeploymentsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified application deployment", "operationId": "v1AppDeploymentsUidDelete", "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": "Application deployment uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appDeployments/{uid}/profile": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns profile of the specified application deployment", "operationId": "v1AppDeploymentsUidProfileGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application deployment profile", "operationId": "v1AppDeploymentsUidProfileUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Application deployment profile request payload", "type": "object", "required": [ "appProfileUid" ], "properties": { "appProfileUid": { "description": "Application deployment profile 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": "Application deployment uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appDeployments/{uid}/profile/apply": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Apply the application deployment profile updates", "operationId": "v1AppDeploymentsUidProfileApply", "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": "Application deployment uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application deployment notification uid", "name": "notify", "in": "query" } ] }, "/v1/appDeployments/{uid}/profile/tiers/{tierUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application deployment profile tier information", "operationId": "v1AppDeploymentsProfileTiersUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application deployment profile tier information", "operationId": "v1AppDeploymentsProfileTiersUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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": "Application deployment uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application deployment tier uid", "name": "tierUid", "in": "path", "required": true } ] }, "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of manifests of the specified application deployment profile tier", "operationId": "v1AppDeploymentsProfileTiersUidManifestsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Application deployment uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application deployment tier uid", "name": "tierUid", "in": "path", "required": true } ] }, "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests/{manifestUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application deployment tier manifest information", "operationId": "v1AppDeploymentsProfileTiersManifestsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application deployment tier manifest information", "operationId": "v1AppDeploymentsProfileTiersManifestsUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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": "Application deployment uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application deployment tier uid", "name": "tierUid", "in": "path", "required": true }, { "type": "string", "description": "Application deployment tier manifest uid", "name": "manifestUid", "in": "path", "required": true } ] }, "/v1/appDeployments/{uid}/profile/versions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of profile versions of the specified application deployment", "operationId": "v1AppDeploymentsUidProfileVersionsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Application deployment uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appProfiles": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a application profile", "operationId": "v1AppProfilesCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/appProfiles/macros": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of application profile macros", "operationId": "v1AppProfilesMacrosList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "properties": { "macros": { "type": "array", "uniqueItems": true, "items": { "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } } } } } } } }, "/v1/appProfiles/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application profile", "operationId": "v1AppProfilesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application profile", "operationId": "v1AppProfilesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 application profile", "operationId": "v1AppProfilesUidDelete", "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/appProfiles/{uid}/clone": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Clones the specified application profile", "operationId": "v1AppProfilesUidClone", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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": "Application profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/clone/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates the specified application profile clone", "operationId": "v1AppProfilesUidCloneValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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": "Application profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/metadata": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application profile metadata", "operationId": "v1AppProfilesUidMetadataUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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": "Application profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/tiers": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of tiers of the specified application profile", "operationId": "v1AppProfilesUidTiersGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds tier to the specified application profile", "operationId": "v1AppProfilesUidTiersCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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" } } } } }, "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates app tier of the specified application profile", "operationId": "v1AppProfilesUidTiersPatch", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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": "Application profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/tiers/{tierUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application profile tier information", "operationId": "v1AppProfilesUidTiersUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application profile tier", "operationId": "v1AppProfilesUidTiersUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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 application profile tier", "operationId": "v1AppProfilesUidTiersUidDelete", "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": "Application profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application profile tier uid", "name": "tierUid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of manifests of the specified application profile tier", "operationId": "v1AppProfilesUidTiersUidManifestsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds manifest to the specified application profile tier", "operationId": "v1AppProfilesUidTiersUidManifestsCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Manifest request payload", "properties": { "content": { "description": "Manifest content", "type": "string" }, "name": { "description": "Manifest name", "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": "Application profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application profile tier uid", "name": "tierUid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests/{manifestUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application profile tier manifest information", "operationId": "v1AppProfilesUidTiersUidManifestsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified application profile tier manifest information", "operationId": "v1AppProfilesUidTiersUidManifestsUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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 application profile tier manifest", "operationId": "v1AppProfilesUidTiersUidManifestsUidDelete", "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": "Application profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application profile tier uid", "name": "tierUid", "in": "path", "required": true }, { "type": "string", "description": "Application profile tier manifest uid", "name": "manifestUid", "in": "path", "required": true } ] }, "/v1/appProfiles/{uid}/tiers/{tierUid}/resolvedValues": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified application profile tier resolved values", "operationId": "v1AppProfilesUidTiersUidResolvedValuesGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "description": "Application tier resolved macro values", "properties": { "resolved": { "description": "Application tier resolved macro values map", "type": "object", "additionalProperties": { "type": "string" } } } } } } }, "parameters": [ { "type": "string", "description": "Application profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Application profile tier uid", "name": "tierUid", "in": "path", "required": true } ] }, "/v1/audits": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves the list of audit logs", "operationId": "v1AuditsList", "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 project uid, to retrieve the specific project audit logs", "name": "projectUid", "in": "query" }, { "type": "string", "description": "Specify the tenant uid, to retrieve the specific tenant audit logs", "name": "tenantUid", "in": "query" }, { "type": "string", "description": "Specify the resource name, to retrieve the specific resource audit logs", "name": "resourceKind", "in": "query" }, { "type": "string", "description": "Specify the resource uid, to retrieve the specific resource audit logs", "name": "resourceUid", "in": "query" }, { "enum": [ "create", "update", "delete", "publish", "deploy" ], "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" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } } } }, "/v1/audits/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified audit log", "operationId": "v1AuditsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Specify the audit uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/audits/{uid}/sysMsg": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified system audit message", "operationId": "v1AuditsUidGetSysMsg", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Audit system message", "type": "object", "properties": { "actionMsg": { "description": "Audit resource action message", "type": "string" }, "contentMsg": { "description": "Audit resource content message", "type": "string" } } } } } }, "parameters": [ { "type": "string", "description": "Specify the audit uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/audits/{uid}/userMsg": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified user message for the specified audit", "operationId": "v1AuditsUidMsgUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Audit user message update request payload", "type": "object", "properties": { "userMsg": { "description": "User message", "type": "string", "maxLength": 255, "minLength": 3 } } } }, { "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": "Specify the audit uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/auth/authenticate": { "post": { "description": "Creates a authentication request with the specified credentials", "tags": [ "v1" ], "summary": "Authenticates the user for the specified crendentials", "operationId": "v1Authenticate", "parameters": [ { "type": "boolean", "default": true, "description": "Describes a way to set cookie from backend.", "name": "setCookie", "in": "query" }, { "description": "Describes the credential details required for authentication", "name": "body", "in": "body", "required": true, "schema": { "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" } } } } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } }, "/v1/auth/org": { "get": { "description": "Returns the allowed login method and information with the organization details", "tags": [ "v1" ], "summary": "Returns the user organization details", "operationId": "v1AuthOrg", "parameters": [ { "type": "string", "name": "orgName", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } }, "/v1/auth/org/{org}/oidc/callback": { "get": { "description": "Returns the Authorization token for the palette. This is called by the IDP as a callback url after IDP authenticates the user with its server.", "tags": [ "v1" ], "summary": "Idp authorization code callback", "operationId": "V1OidcCallback", "responses": { "200": { "description": "OK", "schema": { "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 } } } } } }, "parameters": [ { "type": "string", "description": "Organization name", "name": "org", "in": "path", "required": true }, { "type": "string", "description": "Describes temporary and very short lived code sent by IDP to validate the token", "name": "code", "in": "query" }, { "type": "string", "description": "Describes a state to validate and associate request and response", "name": "state", "in": "query" }, { "type": "string", "description": "Describes a error code in case the IDP is not able to validate and authenticates the user", "name": "error", "in": "query" }, { "type": "string", "description": "Describes a error in case the IDP is not able to validate and authenticates the user", "name": "error_description", "in": "query" } ] }, "/v1/auth/org/{org}/oidc/logout": { "get": { "description": "Returns No Content. Works as a callback url after the IDP logout from their server.", "tags": [ "v1" ], "summary": "Identity provider logout url for the Oidc", "operationId": "V1OidcLogout", "responses": { "204": { "description": "Ok response without content", "headers": { "AuditUid": { "type": "string", "description": "Audit uid for the request" } } } } }, "parameters": [ { "type": "string", "description": "Organization name", "name": "org", "in": "path", "required": true }, { "type": "string", "description": "Describes a state to validate and associate request and response", "name": "state", "in": "query" } ] }, "/v1/auth/org/{org}/saml/callback": { "post": { "description": "Returns the Authorization token for the palette. This is called by the SAML based IDP as a callback url after IDP authenticates the user with its server.", "consumes": [ "application/x-www-form-urlencoded" ], "tags": [ "v1" ], "summary": "Identity provider callback url for the SMAL authentication", "operationId": "V1SamlCallback", "parameters": [ { "type": "string", "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette", "name": "SAMLResponse", "in": "formData" }, { "type": "string", "description": "Describes a state to validate and associate request and response", "name": "RelayState", "in": "formData" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } }, "parameters": [ { "type": "string", "description": "Organization name", "name": "org", "in": "path", "required": true }, { "type": "string", "description": "Deprecated.", "name": "authToken", "in": "query" } ] }, "/v1/auth/org/{org}/saml/logout": { "post": { "description": "Returns No Content. Works as a callback url after the IDP logout from their server.", "consumes": [ "application/x-www-form-urlencoded" ], "tags": [ "v1" ], "summary": "Identity provider logout url for the SMAL", "operationId": "V1SamlLogout", "parameters": [ { "type": "string", "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette to perform logout.", "name": "SAMLResponse", "in": "formData" } ], "responses": { "204": { "description": "Ok response without content", "headers": { "AuditUid": { "type": "string", "description": "Audit uid for the request" } } } } }, "parameters": [ { "type": "string", "description": "Organization name", "name": "org", "in": "path", "required": true }, { "type": "string", "description": "Deprecated.", "name": "authToken", "in": "query" } ] }, "/v1/auth/orgs": { "get": { "description": "Returns a list of user's organizations details and login methods", "tags": [ "v1" ], "summary": "Returns a list of user's organizations", "operationId": "V1AuthOrgs", "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } } } }, "/v1/auth/password/{passwordToken}/activate": { "patch": { "description": "Updates and Activates user password with the help of password token", "tags": [ "v1" ], "summary": "Updates and Activates the specified user password using the password token", "operationId": "v1PasswordActivate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "object", "required": [ "password" ], "properties": { "password": { "description": "Describes the new password for the user", "type": "string", "format": "password" } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "description": "Describes the expirable password token for the user to be used for authentication of user", "name": "passwordToken", "in": "path", "required": true } ] }, "/v1/auth/password/{passwordToken}/reset": { "patch": { "description": "Updates the new user password with the help of password token", "tags": [ "v1" ], "summary": "Resets the user password using the password token", "operationId": "v1PasswordReset", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "object", "required": [ "password" ], "properties": { "password": { "description": "Describes the new password for the user", "type": "string", "format": "password" } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "description": "Describes the expirable password token for the user to be used for authentication of user", "name": "passwordToken", "in": "path", "required": true } ] }, "/v1/auth/refresh/{token}": { "get": { "description": "Returns a new token within refresh timeout and same session id is maintained", "tags": [ "v1" ], "summary": "Refreshes authentication token", "operationId": "v1AuthRefresh", "responses": { "200": { "description": "OK", "schema": { "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 } } } } } }, "parameters": [ { "type": "boolean", "default": true, "description": "Describes a way to set cookie from backend.", "name": "setCookie", "in": "query" }, { "type": "string", "description": "Non expired Authorization token", "name": "token", "in": "path", "required": true } ] }, "/v1/auth/sso/idps": { "get": { "description": "Returns a list of predefined Identity Provider (IDP)", "tags": [ "v1" ], "summary": "Returns a list of predefined Identity Provider (IDP)", "operationId": "V1SsoIdps", "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "/v1/auth/sso/logins": { "get": { "description": "Returns a list of supported sso logins and their authentication mechanism", "tags": [ "v1" ], "summary": "Returns a list of supported sso logins", "operationId": "V1SsoLogins", "parameters": [ { "type": "string", "name": "org", "in": "query" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "/v1/auth/sso/providers": { "get": { "description": "Returns a list of supported sso auth providers", "tags": [ "v1" ], "summary": "Returns a list of supported sso auth providers", "operationId": "V1AuthSsoProviders", "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "/v1/auth/sso/{ssoApp}/callback": { "get": { "description": "Returns Authorization token. Works as a callback url for the system defined sso apps", "tags": [ "v1" ], "summary": "Returns Authorization token. Works as a callback url for the system defined sso apps", "operationId": "V1SsoCallback", "responses": { "200": { "description": "OK", "schema": { "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 } } } } } }, "parameters": [ { "type": "string", "description": "Describes the sso app use to login into the system", "name": "ssoApp", "in": "path", "required": true }, { "type": "string", "description": "Describes temporary and very short lived code sent by IDP to validate the token", "name": "code", "in": "query" }, { "type": "string", "description": "Describes a state to validate and associate request and response", "name": "state", "in": "query" }, { "type": "string", "description": "Describes a error code in case the IDP is not able to validate and authenticates the user", "name": "error", "in": "query" }, { "type": "string", "description": "Describes a error in case the IDP is not able to validate and authenticates the user", "name": "error_description", "in": "query" } ] }, "/v1/auth/user/org/forgot": { "get": { "description": "Returns No Content. Sends the user organization(s) information via email", "tags": [ "v1" ], "summary": "Returns No Content. Sends the user organization information via email", "operationId": "V1AuthUserOrgForgot", "parameters": [ { "type": "string", "description": "Describes user's email id for sending organzation(s) details via email.", "name": "emailId", "in": "query", "required": true } ], "responses": { "204": { "description": "Ok response without content", "headers": { "AuditUid": { "type": "string", "description": "Audit uid for the request" } } } } } }, "/v1/auth/user/password/reset": { "post": { "description": "Creates request to reset password via email. Password reset email will be sent to the user. Sends 204 No Content.", "tags": [ "v1" ], "summary": "Creates request to reset password via email", "operationId": "v1PasswordResetRequest", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "object", "required": [ "emailId" ], "properties": { "emailId": { "description": "Describes email if for which password reset email has to be sent", "type": "string" } } } } ], "responses": { "204": { "description": "Ok response without content", "headers": { "AuditUid": { "type": "string", "description": "Audit uid for the request" } } } } } }, "/v1/cloudaccounts/aws": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS cloud accounts", "operationId": "v1CloudAccountsAwsList", "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 cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an AWS cloud account", "operationId": "v1CloudAccountsAwsCreate", "parameters": [ { "description": "Request payload to validate AWS cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/aws/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified AWS account", "operationId": "v1CloudAccountsAwsGet", "parameters": [ { "type": "boolean", "default": false, "name": "assumeCredentials", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified AWS account", "operationId": "v1CloudAccountsAwsUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 AWS account", "operationId": "v1CloudAccountsAwsDelete", "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": "AWS cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/azure": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of azure cloud accounts", "operationId": "v1CloudAccountsAzureList", "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 azure cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Create azure cloud account", "operationId": "v1CloudAccountsAzureCreate", "parameters": [ { "description": "Request payload to validate Azure cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/azure/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified azure cloud account", "operationId": "v1CloudAccountsAzureGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified azure account", "operationId": "v1CloudAccountsAzureUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 azure account", "operationId": "v1CloudAccountsAzureDelete", "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": "Azure cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/cloudTypes/{cloudType}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cloud accounts by cloud type", "operationId": "v1CloudAccountsCustomList", "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 cloud account by specified cloud type items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an cloud account of specific cloud type", "operationId": "v1CloudAccountsCustomCreate", "parameters": [ { "description": "Request payload to validate Custom cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "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": "Custom cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/cloudaccounts/cloudTypes/{cloudType}/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified account by cloud type", "operationId": "v1CloudAccountsCustomGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified account by cloud type", "operationId": "v1CloudAccountsCustomUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "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 account by cloud type", "operationId": "v1CloudAccountsCustomDelete", "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": "Custom cloud account uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Custom cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/cloudaccounts/gcp": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of gcp cloud accounts", "operationId": "v1CloudAccountsGcpList", "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 gcp cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a GCP cloud account", "operationId": "v1CloudAccountsGcpCreate", "parameters": [ { "description": "Request payload to validate GCP cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/gcp/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified GCP cloud account", "operationId": "v1CloudAccountsGcpGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified GCP account", "operationId": "v1CloudAccountsGcpUpdate", "parameters": [ { "description": "Request payload to validate GCP cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 GCP account", "operationId": "v1CloudAccountsGcpDelete", "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": "GCP cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/maas": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas cloud accounts", "operationId": "v1CloudAccountsMaasList", "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 cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an Maas cloud account", "operationId": "v1CloudAccountsMaasCreate", "parameters": [ { "description": "Request payload to validate Maas cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/maas/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Maas account", "operationId": "v1CloudAccountsMaasGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified Maas account", "operationId": "v1CloudAccountsMaasUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 Maas account", "operationId": "v1CloudAccountsMaasDelete", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "204": { "description": "The resource was deleted successfully" } } }, "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Patches the specified CloudAccount Maas", "operationId": "v1CloudAccountsMaasPatch", "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" } } } } }, { "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": "Maas cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/maas/{uid}/properties/azs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the maas azs for a given account", "operationId": "v1MaasAccountsUidAzs", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/maas/{uid}/properties/domains": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the maas domains for a given account", "operationId": "v1MaasAccountsUidDomains", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/maas/{uid}/properties/resourcePools": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the maas pools for a given account", "operationId": "v1MaasAccountsUidPools", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/maas/{uid}/properties/subnets": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the maas subnets for a given account", "operationId": "v1MaasAccountsUidSubnets", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/maas/{uid}/properties/tags": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the maas tags for a given account", "operationId": "v1MaasAccountsUidTags", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of OpenStack cloud accounts", "operationId": "v1CloudAccountsOpenStackList", "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 cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a OpenStack cloud account", "operationId": "v1CloudAccountsOpenStackCreate", "parameters": [ { "description": "Request payload to validate OpenStack cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/openstack/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified OpenStack account", "operationId": "v1CloudAccountsOpenStackGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified OpenStack account", "operationId": "v1CloudAccountsOpenStackUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 OpenStack account", "operationId": "v1CloudAccountsOpenStackDelete", "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": "OpenStack cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack/{uid}/properties/azs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the openstack azs for a given account and region", "operationId": "v1OpenstackAccountsUidAzs", "parameters": [ { "type": "string", "name": "region", "in": "query" }, { "type": "string", "name": "project", "in": "query" }, { "type": "string", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack/{uid}/properties/flavors": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the openstack keypairs for a given account and scope", "operationId": "v1OpenstackAccountsUidFlavors", "parameters": [ { "type": "string", "name": "project", "in": "query" }, { "type": "string", "name": "region", "in": "query" }, { "type": "string", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack/{uid}/properties/keypairs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the openstack keypairs for a given account and scope", "operationId": "v1OpenstackAccountsUidKeypairs", "parameters": [ { "type": "string", "name": "project", "in": "query" }, { "type": "string", "name": "region", "in": "query" }, { "type": "string", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack/{uid}/properties/networks": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the openstack networks for a given account and scope", "operationId": "v1OpenstackAccountsUidNetworks", "parameters": [ { "type": "string", "name": "project", "in": "query" }, { "type": "string", "name": "region", "in": "query" }, { "type": "string", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack/{uid}/properties/projects": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the openstack projects for a given account", "operationId": "v1OpenstackAccountsUidProjects", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/openstack/{uid}/properties/regions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the openstack regions for a given account", "operationId": "v1OpenstackAccountsUidRegions", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/summary": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cloud accounts summary", "operationId": "v1CloudAccountsListSummary", "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" }, { "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 cloud account summary items", "schema": { "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 } } } } } } } } }, "/v1/cloudaccounts/tencent": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Tencent cloud accounts", "operationId": "v1CloudAccountsTencentList", "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 cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an Tencent cloud account", "operationId": "v1CloudAccountsTencentCreate", "parameters": [ { "description": "Request payload to validate Tencent cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/tencent/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Tencent account", "operationId": "v1CloudAccountsTencentGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified Tencent account", "operationId": "v1CloudAccountsTencentUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 Tencent account", "operationId": "v1CloudAccountsTencentDelete", "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": "Tencent cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/vsphere": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of vSphere cloud accounts", "operationId": "v1CloudAccountsVsphereList", "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 cloud account items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a vSphere cloud account", "operationId": "v1CloudAccountsVsphereCreate", "parameters": [ { "description": "Request payload to validate VSphere cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/cloudaccounts/vsphere/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified vSphere account", "operationId": "v1CloudAccountsVsphereGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified VSphere account", "operationId": "v1CloudAccountsVsphereUpdate", "parameters": [ { "description": "Request payload to validate VSphere cloud account", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 vSphere account", "operationId": "v1CloudAccountsVsphereDelete", "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": "VSphere cloud account uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/vsphere/{uid}/properties/computecluster/resources": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the vSphere computecluster resources for the given overlord account", "operationId": "v1VsphereAccountsUidClusterRes", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "type": "string", "name": "datacenter", "in": "query", "required": true }, { "type": "string", "name": "computecluster", "in": "query", "required": true }, { "type": "boolean", "name": "useQualifiedNetworkName", "in": "query" } ] }, "/v1/cloudaccounts/vsphere/{uid}/properties/datacenters": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the vSphere datacenters \u0026 datacluster for the given overlord account", "operationId": "v1VsphereAccountsUidDatacenters", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/cloudaccounts/{uid}/geoLocation": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the geolocation annotation", "operationId": "v1AccountsGeolocationPatch", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "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 } } } }, { "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/cloudconfigs/aks/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified AKS cloud config", "operationId": "v1CloudConfigsAksGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aks/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsAksUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aks/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an AKS cloud config's machine pool", "operationId": "v1CloudConfigsAksMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified AKS cloud config's machine pool", "operationId": "v1CloudConfigsAksMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsAksMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AKS machines", "operationId": "v1CloudConfigsAksPoolMachinesList", "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 AKS machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsAksPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified AKS machine", "operationId": "v1CloudConfigsAksPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsAksPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 Azure machine", "operationId": "v1CloudConfigsAksPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aws/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified AWS cloud config", "operationId": "v1CloudConfigsAwsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aws/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsAwsUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aws/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an AWS cloud config's machine pool", "operationId": "v1CloudConfigsAwsMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified AWS cloud config's machine pool", "operationId": "v1CloudConfigsAwsMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsAwsMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS machines", "operationId": "v1CloudConfigsAwsPoolMachinesList", "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 AWS machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsAwsPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified AWS machine", "operationId": "v1CloudConfigsAwsPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsAwsPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 AWS machine", "operationId": "v1CloudConfigsAwsPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/azure/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Azure cloud config", "operationId": "v1CloudConfigsAzureGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/azure/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsAzureUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/azure/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an Azure cloud config's machine pool", "operationId": "v1CloudConfigsAzureMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified Azure cloud config's machine pool", "operationId": "v1CloudConfigsAzureMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsAzureMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns all the Azure machines restricted to the user role and filters.", "tags": [ "v1" ], "summary": "Retrieves a list of Azure machines", "operationId": "v1CloudConfigsAzurePoolMachinesList", "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 AWS machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsAzurePoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns a Azure machine for the specified uid.", "tags": [ "v1" ], "summary": "Returns the specified Azure machine", "operationId": "v1CloudConfigsAzurePoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to cloud config's machine pool", "operationId": "v1CloudConfigsAzurePoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 Azure machine", "operationId": "v1CloudConfigsAzurePoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Custom cloud config", "operationId": "v1CloudConfigsCustomGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud type", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsCustomUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud type", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an Custom cloud config's machine pool", "operationId": "v1CloudConfigsCustomMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud type", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified Custom cloud config's machine pool", "operationId": "v1CloudConfigsCustomMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsCustomMachinePoolDelete", "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's cloud type", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Custom machines", "operationId": "v1CloudConfigsCustomPoolMachinesList", "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 Custom machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsCustomPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud type", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Custom machine", "operationId": "v1CloudConfigsCustomPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsCustomPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 Custom machine", "operationId": "v1CloudConfigsCustomPoolMachinesUidDelete", "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's cloud type", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/edge-native/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified edge-native cloud config", "operationId": "v1CloudConfigsEdgeNativeGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/edge-native/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsEdgeNativeUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/edge-native/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a edge-native cloud config's machine pool", "operationId": "v1CloudConfigsEdgeNativeMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified edge-native cloud config's machine pool", "operationId": "v1CloudConfigsEdgeNativeMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsEdgeNativeMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of edge-native machines", "operationId": "v1CloudConfigsEdgeNativePoolMachinesList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of edge-native machine items", "schema": { "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" } } } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the edge-native machine to cloud config's machine pool", "operationId": "v1CloudConfigsEdgeNativePoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified edge-native machine", "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to cloud config's machine pool", "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 edge-native machine", "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified EKS cloud config", "operationId": "v1CloudConfigsEksGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsEksUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}/fargateProfiles": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates EKS cloud config's fargate profiles", "operationId": "v1CloudConfigsEksUidFargateProfilesUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an EKS cloud config's machine pool", "operationId": "v1CloudConfigsEksMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified EKS cloud config's machine pool", "operationId": "v1CloudConfigsEksMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsEksMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of EKS machines", "operationId": "v1CloudConfigsEksPoolMachinesList", "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 EKS machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsEksPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified EKS machine", "operationId": "v1CloudConfigsEksPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsEksPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 EKS machine", "operationId": "v1CloudConfigsEksPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gcp/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified GCP cloud config", "operationId": "v1CloudConfigsGcpGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gcp/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsGcpUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gcp/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a Gcp cloud config's machine pool", "operationId": "v1CloudConfigsGcpMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified GCP cloud config's machine pool", "operationId": "v1CloudConfigsGcpMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsGcpMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP machines", "operationId": "v1CloudConfigsGcpPoolMachinesList", "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 GCP machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsGcpPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified GCP machine", "operationId": "v1CloudConfigsGcpPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsGcpPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 GCP machine", "operationId": "v1CloudConfigsGcpPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/generic/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Generic cloud config", "operationId": "v1CloudConfigsGenericGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/generic/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsGenericUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/generic/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a generic cloud config's machine pool", "operationId": "v1CloudConfigsGenericMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified generic cloud config's machine pool", "operationId": "v1CloudConfigsGenericMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsGenericMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Generic machines", "operationId": "v1CloudConfigsGenericPoolMachinesList", "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 Generic machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsGenericPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified generic machine", "operationId": "v1CloudConfigsGenericPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsGenericPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 machine", "operationId": "v1CloudConfigsGenericPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gke/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified GKE cloud config", "operationId": "v1CloudConfigsGkeGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gke/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsGkeUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gke/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an GKE cloud config's machine pool", "operationId": "v1CloudConfigsGkeMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified GKE cloud config's machine pool", "operationId": "v1CloudConfigsGkeMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsGkeMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GKE machines", "operationId": "v1CloudConfigsGkePoolMachinesList", "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 GKE machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsGkePoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified GKE machine", "operationId": "v1CloudConfigsGkePoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsGkePoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 Gcp machine", "operationId": "v1CloudConfigsGkePoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/maas/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Maas cloud config", "operationId": "v1CloudConfigsMaasGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/maas/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsMaasUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/maas/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an Maas cloud config's machine pool", "operationId": "v1CloudConfigsMaasMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified Maas cloud config's machine pool", "operationId": "v1CloudConfigsMaasMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsMaasMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas machines", "operationId": "v1CloudConfigsMaasPoolMachinesList", "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 Maas machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsMaasPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Maas machine", "operationId": "v1CloudConfigsMaasPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsMaasPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 Maas machine", "operationId": "v1CloudConfigsMaasPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/openstack/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified OpenStack cloud config", "operationId": "v1CloudConfigsOpenStackGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/openstack/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsOpenStackUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/openstack/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a OpenStack cloud config's machine pool", "operationId": "v1CloudConfigsOpenStackMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified OpenStack cloud config's machine pool", "operationId": "v1CloudConfigsOpenStackMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsOpenStackMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of OpenStack machines", "operationId": "v1CloudConfigsOpenStackPoolMachinesList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of OpenStack machine items", "schema": { "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" } } } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the OpenStack machine to cloud config's machine pool", "operationId": "v1CloudConfigsOpenStackPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified OpenStack machine", "operationId": "v1CloudConfigsOpenStackPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to cloud config's machine pool", "operationId": "v1CloudConfigsOpenStackPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 OpenStack machine", "operationId": "v1CloudConfigsOpenStackPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/tke/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified TKE cloud config", "operationId": "v1CloudConfigsTkeGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/tke/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsTkeUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/tke/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an TKE cloud config's machine pool", "operationId": "v1CloudConfigsTkeMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified TKE cloud config's machine pool", "operationId": "v1CloudConfigsTkeMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsTkeMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of TKE machines", "operationId": "v1CloudConfigsTkePoolMachinesList", "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 TKE machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsTkePoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Tke machine", "operationId": "v1CloudConfigsTkePoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsTkePoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 Tencent machine", "operationId": "v1CloudConfigsTkePoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Virtual cloud config", "operationId": "v1CloudConfigsVirtualGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsVirtualUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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": "" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a virtual cloud config's machine pool", "operationId": "v1CloudConfigsVirtualMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified virtual cloud config's machine pool", "operationId": "v1CloudConfigsVirtualMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 machine pool", "operationId": "v1CloudConfigsVirtualMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of virtual machines", "operationId": "v1CloudConfigsVirtualPoolMachinesList", "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 virtual machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the machine to cloud config's machine pool", "operationId": "v1CloudConfigsVirtualPoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified virtual machine", "operationId": "v1CloudConfigsVirtualPoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to the cloud config's machine pool", "operationId": "v1CloudConfigsVirtualPoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 virtual machine", "operationId": "v1CloudConfigsVirtualPoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/virtual/{configUid}/resize": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates and resizes the virtual cluster", "operationId": "v1CloudConfigsVirtualUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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": "Specify virtual cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/vsphere/{configUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified vSphere cloud config", "operationId": "v1CloudConfigsVsphereGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/vsphere/{configUid}/clusterConfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the cluster configuration information", "operationId": "v1CloudConfigsVsphereUidClusterConfig", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/vsphere/{configUid}/machinePools": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a vSphere cloud config's machine pool", "operationId": "v1CloudConfigsVsphereMachinePoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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": { "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's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified vSphere cloud config's machine pool", "operationId": "v1CloudConfigsVsphereMachinePoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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": { "204": { "description": "The resource was updated successfully" } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified machine pool", "operationId": "v1CloudConfigsVsphereMachinePoolDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of vSphere machines", "operationId": "v1CloudConfigsVspherePoolMachinesList", "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 vSphere machine items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds the vSphere machine to cloud config's machine pool", "operationId": "v1CloudConfigsVspherePoolMachinesAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true } ] }, "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified vSphere machine", "operationId": "v1CloudConfigsVspherePoolMachinesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine to cloud config's machine pool", "operationId": "v1CloudConfigsVspherePoolMachinesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 vSphere machine", "operationId": "v1CloudConfigsVspherePoolMachinesUidDelete", "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true } ] }, "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine maintenance", "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "type": "object", "properties": { "action": { "description": "Machine maintenance mode action", "type": "string", "enum": [ "cordon", "uncordon" ] } } } }, { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true }, { "type": "string", "description": "Cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance/status": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified machine maintenance", "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceStatusUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Machine maintenance status", "type": "object", "properties": { "action": { "type": "string" }, "message": { "type": "string" }, "state": { "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's cloud config uid", "name": "configUid", "in": "path", "required": true }, { "type": "string", "description": "Machine pool name", "name": "machinePoolName", "in": "path", "required": true }, { "type": "string", "description": "Machine uid", "name": "machineUid", "in": "path", "required": true }, { "type": "string", "description": "Cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/cloudconfigs/{configUid}/machinePools/machineUids": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cloud config's machine pools and machine uid", "operationId": "v1CloudConfigsMachinePoolsMachineUidsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "properties": { "machinePools": { "type": "object", "additionalProperties": { "properties": { "machineUids": { "type": "array", "items": { "type": "string" } } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud config uid", "name": "configUid", "in": "path", "required": true } ] }, "/v1/clouds/aws/account/sts": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves AWS external id and account id", "operationId": "V1AwsAccountStsGet", "parameters": [ { "enum": [ "aws", "aws-us-gov" ], "type": "string", "default": "aws", "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", "name": "partition", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" ] } } } } } } }, "/v1/clouds/aws/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified AWS account credentials", "operationId": "V1AwsAccountValidate", "parameters": [ { "description": "Request payload to validate AWS cloud account", "name": "awsCloudAccount", "in": "body", "required": true, "schema": { "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" } } } } } }, { "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/clouds/aws/cloudwatch/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Validates aws cloud watch credentials", "tags": [ "v1" ], "summary": "validates aws cloud watch credentials", "operationId": "V1CloudsAwsCloudWatchValidate", "parameters": [ { "description": "Request payload for cloud watch config", "name": "cloudWatchConfig", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/aws/cost": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves AWS cloud account usage cost from cost explorer.", "operationId": "v1AwsCloudCost", "parameters": [ { "description": "Request payload for AWS cloud cost", "name": "body", "in": "body", "required": true, "schema": { "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" } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } } } }, "/v1/clouds/aws/imageIds/{imageId}/volumeSize": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Get AWS Volume Size", "tags": [ "v1" ], "summary": "Get AWS Volume Size", "operationId": "V1AwsVolumeSizeGet", "parameters": [ { "type": "string", "description": "Specific AWS Region", "name": "region", "in": "query", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "AWS image id", "name": "imageId", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "AWS Volume Size entity", "type": "object", "properties": { "sizeGB": { "description": "AWS volume size", "type": "integer" } } } } } } }, "/v1/clouds/aws/policies": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS policies for the specified account", "operationId": "V1AwsIamPolicies", "parameters": [ { "description": "Request payload for AWS Cloud Account", "name": "account", "in": "body", "required": true, "schema": { "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" } } } } } }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "type": "object", "required": [ "policies" ], "properties": { "policies": { "type": "array", "items": { "description": "Aws policy", "type": "object", "properties": { "arn": { "type": "string" }, "policyId": { "type": "string" }, "policyName": { "type": "string" } } } } } } } } } }, "/v1/clouds/aws/policyArns/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the aws policy arns validate", "operationId": "V1AwsPolicyArnsValidate", "parameters": [ { "description": "Request payload to validate AWS policy ARN", "name": "spec", "in": "body", "required": true, "schema": { "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" } } } } }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "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/clouds/aws/properties/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate AWS properties", "operationId": "V1AwsPropertiesValidate", "parameters": [ { "description": "Request payload for AWS properties validate spec", "name": "properties", "in": "body", "required": true, "schema": { "description": "AWS properties validate spec", "type": "object", "properties": { "region": { "type": "string" }, "sshKeyName": { "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" } } } } } }, "/v1/clouds/aws/regions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS regions for the specified account", "operationId": "V1AwsRegions", "parameters": [ { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/aws/regions/{region}/availabilityzones": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS availability zones for the specified region", "operationId": "V1AwsZones", "parameters": [ { "type": "string", "description": "Region for which zones are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/aws/regions/{region}/copydefaultimages": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Copies the specified image from one region to another region", "operationId": "V1AwsCopyImageFromDefaultRegion", "parameters": [ { "type": "string", "description": "Region to copy AWS image from", "name": "region", "in": "path", "required": true }, { "description": "Request payload to copy the AWS image", "name": "spectroClusterAwsImageTag", "in": "body", "schema": { "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" } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Async operation id", "type": "object", "properties": { "operationId": { "description": "OperationId for a particular sync operation id", "type": "string" } } } } } } }, "/v1/clouds/aws/regions/{region}/eksClusters/name/validate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if aws cluster name is valid else error.", "tags": [ "v1" ], "summary": "Check if Aws cluster name is valid", "operationId": "V1AwsClusterNameValidate", "parameters": [ { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "cluster name to be validated", "name": "name", "in": "query", "required": true }, { "type": "string", "description": "Region for which cluster name is validated", "name": "region", "in": "path", "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/clouds/aws/regions/{region}/images": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns AWS image for the specified AMI name", "operationId": "V1AwsFindImage", "parameters": [ { "type": "string", "description": "Region to find AWS image", "name": "region", "in": "path", "required": true }, { "description": "Request payload to find the AWS image", "name": "awsImageRequest", "in": "body", "schema": { "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" } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "/v1/clouds/aws/regions/{region}/instancetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS instance types", "operationId": "V1AwsInstanceTypes", "parameters": [ { "type": "string", "description": "Region for which AWS instances are requested", "name": "region", "in": "path", "required": true }, { "type": "number", "format": "double", "description": "Filter for instances having cpu greater than or equal", "name": "cpuGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having memory greater than or equal", "name": "memoryGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having gpu greater than or equal", "name": "gpuGtEq", "in": "query" }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/aws/regions/{region}/keypairs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS keypairs", "operationId": "V1AwsKeyPairs", "parameters": [ { "type": "string", "description": "Region for which AWS key pairs are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "List of AWS keypairs", "type": "object", "properties": { "keyNames": { "description": "Array of Aws Keypair names", "type": "array", "items": { "type": "string" } } } } } } } }, "/v1/clouds/aws/regions/{region}/keypairs/{keypair}/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified AWS keypair", "operationId": "V1AwsKeyPairValidate", "parameters": [ { "type": "string", "description": "Region for which AWS key pairs is validated", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "AWS Key pair which is to be validated", "name": "keypair", "in": "path", "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/clouds/aws/regions/{region}/kms/{keyId}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get AWS KMS key by Id", "operationId": "V1AwsKmsKeyGet", "parameters": [ { "type": "string", "description": "Region for which AWS KMS key belongs", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "The globally unique identifier for the KMS key", "name": "keyId", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "/v1/clouds/aws/regions/{region}/kmskeys": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS KMS keys for the specified account", "operationId": "V1AwsKmsKeys", "parameters": [ { "type": "string", "description": "Region for which AWS KMS key are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/aws/regions/{region}/kmskeys/validate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate an Aws KMS key for the specified account", "operationId": "V1AwsKmsKeyValidate", "parameters": [ { "type": "string", "description": "Region for which AWS KMS key is validated", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "AWS KEY ARN for validation", "name": "keyArn", "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/clouds/aws/regions/{region}/storagetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS storage types", "operationId": "V1AwsStorageTypes", "parameters": [ { "type": "string", "description": "Region for which AWS storage types are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } } } }, "/v1/clouds/aws/regions/{region}/vpcs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of VPCs for the specified account", "operationId": "V1AwsVpcs", "parameters": [ { "type": "string", "description": "Region for which VPCs are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/aws/s3/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the AWS S3 bucket", "operationId": "V1AwsS3Validate", "parameters": [ { "description": "AWS S3 bucket credentials", "name": "awsS3Credential", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/aws/securitygroups": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of AWS security groups for the specified account", "operationId": "V1AwsSecurityGroups", "parameters": [ { "type": "string", "description": "Uid for the specific AWS cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Region for which security groups are requested", "name": "region", "in": "query", "required": true }, { "type": "string", "description": "Vpc Id for which security groups are requested", "name": "vpcId", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/aws/volumeTypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "List all AWS Volume Types", "tags": [ "v1" ], "summary": "Get all AWS Volume Types", "operationId": "V1AwsVolumeTypesGet", "parameters": [ { "type": "string", "description": "Specific AWS Region", "name": "region", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if account is valid else error.", "tags": [ "v1" ], "summary": "Check if Azure account is valid", "operationId": "V1AzureAccountValidate", "parameters": [ { "description": "Request payload for Azure cloud account", "name": "azureCloudAccount", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/azure/groups": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure groups", "operationId": "V1AzureGroups", "parameters": [ { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/regions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure regions", "operationId": "V1AzureRegions", "parameters": [ { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "SubscriptionId for which resources is requested", "name": "subscriptionId", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } }, "/v1/clouds/azure/regions/{region}/instancetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure instance types", "operationId": "V1AzureInstanceTypes", "parameters": [ { "type": "string", "description": "Region for which Azure instance types are requested", "name": "region", "in": "path", "required": true }, { "type": "number", "format": "double", "description": "Filter for instances having cpu greater than or equal", "name": "cpuGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having memory greater than or equal", "name": "memoryGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having gpu greater than or equal", "name": "gpuGtEq", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/regions/{region}/storagetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure storage types", "operationId": "V1AzureStorageTypes", "parameters": [ { "type": "string", "description": "Region for which Azure storage types are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } } } }, "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/aksClusters/name/validate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if Azure cluster name is valid else error.", "tags": [ "v1" ], "summary": "Check if Azure cluster name is valid", "operationId": "V1AzureClusterNameValidate", "parameters": [ { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "cluster name to be validated", "name": "name", "in": "query", "required": true }, { "type": "string", "description": "region in which cluster name is to be validated", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "subscriptionId in which cluster name is to be validated", "name": "subscriptionId", "in": "path", "required": true }, { "type": "string", "description": "resourceGroup in which cluster name is to be validated", "name": "resourceGroup", "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/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/networks": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure virtual network list for the sepcified account", "operationId": "V1AzureVirtualNetworkList", "parameters": [ { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Region for which Azure virtual networks are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for which Azure virtual networks are requested", "name": "subscriptionId", "in": "path", "required": true }, { "type": "string", "description": "Resource group for which Azure virtual networks are requested", "name": "resourceGroup", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/resourceGroups": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure resource group for the specified account", "operationId": "V1AzureResourceGroupList", "parameters": [ { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Region for which Azure resource group are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for which Azure resource group are requested", "name": "subscriptionId", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/regions/{region}/zones": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Azure zones for the specified region", "operationId": "V1AzureZones", "parameters": [ { "type": "string", "description": "Region for which Azure zones are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "subscriptionId of azure account", "name": "subscriptionId", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/resourceGroups/{resourceGroup}/privateDnsZones": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns Azure private DNS zones", "tags": [ "v1" ], "summary": "Get Azure private DNS zones for the given resource group", "operationId": "V1AzurePrivateDnsZones", "parameters": [ { "type": "string", "description": "resourceGroup for which Azure private dns zones are requested", "name": "resourceGroup", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "subscriptionId for which Azure private dns zones are requested", "name": "subscriptionId", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns Azure storage accounts.", "tags": [ "v1" ], "summary": "Get Azure storage accounts", "operationId": "V1AzureStorageAccounts", "parameters": [ { "type": "string", "description": "resourceGroup for which Azure storage accounts are requested", "name": "resourceGroup", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "subscriptionId for which Azure storage accounts are requested", "name": "subscriptionId", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts/{storageAccountName}/containers": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns Azure storage containers for the given account.", "tags": [ "v1" ], "summary": "Get Azure storage containers", "operationId": "V1AzureStorageContainers", "parameters": [ { "type": "string", "description": "resourceGroup for which Azure storage accounts are requested", "name": "resourceGroup", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "subscriptionId for which Azure storage accounts are requested", "name": "subscriptionId", "in": "query", "required": true }, { "type": "string", "description": "resourceGroup for which Azure storage accounts are requested", "name": "storageAccountName", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/storageaccounttypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns Azure storage account types.", "tags": [ "v1" ], "summary": "Get Azure storage account types", "operationId": "V1AzureStorageAccountTypes", "parameters": [ { "type": "string", "description": "Region for which Azure storage account types are requested", "name": "region", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/subscriptions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns list of Azure subscription list.", "tags": [ "v1" ], "summary": "Retrieves a list of Azure subscription list for the specified account", "operationId": "V1AzureSubscriptionList", "parameters": [ { "type": "string", "description": "Uid for the specific Azure cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/azure/vhds/{vhd}/url": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the Azure vhd url for the specified vhd location", "operationId": "V1AzureVhdUrl", "parameters": [ { "type": "string", "description": "vhd location for which Azure vhd url is requested", "name": "vhd", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "/v1/clouds/cloudTypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud types", "operationId": "V1CustomCloudTypesGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/cloudTypes/register": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Registers the custom cloud type", "operationId": "V1CustomCloudTypeRegister", "parameters": [ { "description": "Request payload to register custom cloud type", "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/clouds/cloudTypes/{cloudType}": { "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the custom cloud type", "operationId": "V1CustomCloudTypesDelete", "parameters": [ { "type": "string", "description": "Unique cloud type", "name": "cloudType", "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 deleted successfully" } } } }, "/v1/clouds/cloudTypes/{cloudType}/cloudAccountKeys": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns valid keys for the cloud account used for custom cloud type", "operationId": "V1CustomCloudTypeCloudAccountKeysGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the custom cloud type cloud account keys", "operationId": "V1CustomCloudTypeCloudAccountKeysUpdate", "parameters": [ { "description": "Request payload for custom cloud meta entity", "name": "body", "in": "body", "required": true, "schema": { "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" } } } } }, { "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/content/bootstrap": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type bootstrap", "operationId": "V1CustomCloudTypeBootstrapGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Custom cloudType content response", "type": "object", "properties": { "yaml": { "description": "custom cloud type content", "type": "string" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type bootstrap", "operationId": "V1CustomCloudTypeBootstrapUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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" } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete the custom cloud type bootstrap", "operationId": "V1CustomCloudTypeBootstrapDelete", "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/content/cloudProvider": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type cloud provider", "operationId": "V1CustomCloudTypeCloudProviderGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Custom cloudType content response", "type": "object", "properties": { "yaml": { "description": "custom cloud type content", "type": "string" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type cloud provider", "operationId": "V1CustomCloudTypeCloudProviderUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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" } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete the custom cloud type cloud provider", "operationId": "V1CustomCloudTypeCloudProviderDelete", "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/content/controlPlane": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type control plane", "operationId": "V1CustomCloudTypeControlPlaneGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Custom cloudType content response", "type": "object", "properties": { "yaml": { "description": "custom cloud type content", "type": "string" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type control plane", "operationId": "V1CustomCloudTypeControlPlaneUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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" } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete the custom cloud type control plane", "operationId": "V1CustomCloudTypeControlPlaneDelete", "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/content/templates/clusterTemplate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type cluster template", "operationId": "V1CustomCloudTypeClusterTemplateGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Custom cloudType content response", "type": "object", "properties": { "yaml": { "description": "custom cloud type content", "type": "string" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type cluster template", "operationId": "V1CustomCloudTypeClusterTemplateUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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" } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete the custom cloud type cluster template", "operationId": "V1CustomCloudTypeClusterTemplateDelete", "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/content/templates/controlPlanePoolTemplate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type controlPlane pool template", "operationId": "V1CustomCloudTypeControlPlanePoolTemplateGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Custom cloudType content response", "type": "object", "properties": { "yaml": { "description": "custom cloud type content", "type": "string" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type controlPlane pool template", "operationId": "V1CustomCloudTypeControlPlanePoolTemplateUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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" } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete the custom cloud type controlPlane pool template", "operationId": "V1CustomCloudTypeControlPlanePoolTemplateDelete", "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type worker pool template", "operationId": "V1CustomCloudTypeWorkerPoolTemplateGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Custom cloudType content response", "type": "object", "properties": { "yaml": { "description": "custom cloud type content", "type": "string" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type worker pool template", "operationId": "V1CustomCloudTypeWorkerPoolTemplateUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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" } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete the custom cloud type worker pool template", "operationId": "V1CustomCloudTypeWorkerPoolTemplateDelete", "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/logo": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Returns the custom cloud type logo", "operationId": "V1CustomCloudTypeLogoGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Download the logo", "schema": { "type": "string", "format": "binary" }, "headers": { "Content-Disposition": { "type": "string" } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update the custom cloud type logo", "operationId": "V1CustomCloudTypeLogoUpdate", "parameters": [ { "type": "file", "name": "fileName", "in": "formData" }, { "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/cloudTypes/{cloudType}/meta": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the custom cloud type meta", "operationId": "V1CustomCloudTypeMetaGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the custom cloud type meta", "operationId": "V1CustomCloudTypeMetaUpdate", "parameters": [ { "description": "Request payload for custom cloud meta entity", "name": "body", "in": "body", "required": true, "schema": { "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" } } } } } }, { "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": "Unique cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/clouds/eks/properties/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate EKS properties", "operationId": "V1EksPropertiesValidate", "parameters": [ { "description": "Request payload for EKS properties validate spec", "name": "properties", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/gcp/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified GCP account credentials", "operationId": "V1GcpAccountValidate", "parameters": [ { "description": "Uid for the specific GCP cloud account", "name": "gcpCloudAccount", "in": "body", "required": true, "schema": { "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" } } } } } }, { "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/clouds/gcp/azs/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified GCP az", "operationId": "V1GcpAzValidate", "parameters": [ { "description": "Uid for the specific GCP cloud account", "name": "entity", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/gcp/bucketname/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified GCP bucket name credentials", "operationId": "V1GcpBucketNameValidate", "parameters": [ { "description": "Request payload for GCP account name validate", "name": "body", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/gcp/image/container/validate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates the image with tag", "operationId": "V1GcpContainerImageValidate", "parameters": [ { "type": "string", "description": "image path in the container", "name": "imagePath", "in": "query", "required": true }, { "type": "string", "description": "tag in the GCP container", "name": "tag", "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/clouds/gcp/images/{imageName}/url": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the Gcp image url for the specified image location", "operationId": "V1GcpImageUrl", "parameters": [ { "type": "string", "description": "imageName for which GCP image url is requested", "name": "imageName", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "/v1/clouds/gcp/projects": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP projects for the specified account", "operationId": "V1GcpProjects", "parameters": [ { "type": "string", "description": "Uid for the specific GCP cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/gcp/projects/{project}/regions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP regions", "operationId": "V1GcpRegions", "parameters": [ { "type": "string", "description": "Uid for the specific GCP cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Project Name for which GCP zones are requested", "name": "project", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/gcp/projects/{project}/regions/{region}/networks": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP networks for the specified account", "operationId": "V1GcpNetworks", "parameters": [ { "type": "string", "description": "Uid for the specific GCP cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Region for which GCP networks are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Project Name for which GCP networks are requested", "name": "project", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } }, "/v1/clouds/gcp/projects/{project}/regions/{region}/zones": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP zones for the specified account and region", "operationId": "V1GcpZones", "parameters": [ { "type": "string", "description": "Uid for the specific GCP cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Region for which GCP zones are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Project Name for which GCP zones are requested", "name": "project", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/gcp/projects/{project}/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified GCP project", "operationId": "V1GcpProjectValidate", "parameters": [ { "type": "string", "description": "GCP project uid", "name": "project", "in": "path", "required": true }, { "description": "Uid for the specific GCP cloud account", "name": "cloudAccountUid", "in": "body", "required": true, "schema": { "description": "Cloud account uid entity", "type": "object", "properties": { "uid": { "description": "Cloud account uid", "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" } } } } } }, "/v1/clouds/gcp/projects/{project}/zones": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP zones for the specified account", "operationId": "V1GcpAvailabilityZones", "parameters": [ { "type": "string", "description": "Uid for the specific GCP cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Project Name for which GCP zones are requested", "name": "project", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/gcp/properties/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate GCP properties", "operationId": "V1GcpPropertiesValidate", "parameters": [ { "description": "Request payload for GCP properties validate spec", "name": "properties", "in": "body", "required": true, "schema": { "description": "Gcp properties validate spec", "type": "object", "properties": { "azs": { "type": "array", "items": { "type": "string" } }, "cloudAccountUid": { "type": "string" }, "projectId": { "type": "string" }, "region": { "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" } } } } } }, "/v1/clouds/gcp/regions/{region}/instancetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of GCP instance types", "operationId": "V1GcpInstanceTypes", "parameters": [ { "type": "string", "description": "Region for which GCP instance types are requested", "name": "region", "in": "path", "required": true }, { "type": "number", "format": "double", "description": "Filter for instances having cpu greater than or equal", "name": "cpuGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having memory greater than or equal", "name": "memoryGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having gpu greater than or equal", "name": "gpuGtEq", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/gcp/regions/{region}/storagetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Gcp storage types", "operationId": "V1GcpStorageTypes", "parameters": [ { "type": "string", "description": "Region for which GCP storage types are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } } } }, "/v1/clouds/maas/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if account is valid else error.", "tags": [ "v1" ], "summary": "Check if Maas account is valid", "operationId": "V1MaasAccountValidate", "parameters": [ { "description": "Request payload for Maas cloud account", "name": "account", "in": "body", "required": true, "schema": { "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": "" } } } } }, { "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/clouds/maas/azs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas zones for a particular account uid", "operationId": "V1MaasZonesGet", "parameters": [ { "type": "string", "description": "Uid for the specific Maas cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/maas/domains": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas domains", "operationId": "V1MaasDomainsGet", "parameters": [ { "type": "string", "description": "Uid for the specific Maas cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/maas/resourcePools": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas pools for a particular account uid", "operationId": "V1MaasPoolsGet", "parameters": [ { "type": "string", "description": "Uid for the specific Maas cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/maas/subnets": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas subnets for a particular account uid", "operationId": "V1MaasSubnetsGet", "parameters": [ { "type": "string", "description": "Uid for the specific Maas cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } }, "/v1/clouds/maas/tags": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Maas tags for a particular account uid", "operationId": "V1MaasTagsGet", "parameters": [ { "type": "string", "description": "Uid for the specific Maas cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/openstack/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if account is valid else error.", "tags": [ "v1" ], "summary": "Check if OpenStack account is valid", "operationId": "V1OpenStackAccountValidate", "parameters": [ { "description": "Request payload for OpenStack cloud account", "name": "openstackCloudAccount", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/openstack/azs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of OpenStack azs for a particular account uid", "operationId": "V1OpenStackAzsGet", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "project for which OpenStack azs are requested", "name": "project", "in": "query" }, { "type": "string", "description": "region for which OpenStack azs are requested", "name": "region", "in": "query" }, { "type": "string", "description": "domain for which OpenStack azs are requested", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/openstack/flavors": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the OpenStack flavors", "operationId": "V1OpenStackFlavorsGet", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "project for which OpenStack flavors are requested", "name": "project", "in": "query" }, { "type": "string", "description": "region for which OpenStack flavors are requested", "name": "region", "in": "query" }, { "type": "string", "description": "domain for which OpenStack flavors are requested", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/openstack/keypairs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the OpenStack keypair", "operationId": "V1OpenStackKeypairsGet", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "project for which OpenStack keypairs are requested", "name": "project", "in": "query" }, { "type": "string", "description": "region for which OpenStack keypairs are requested", "name": "region", "in": "query" }, { "type": "string", "description": "domain for which OpenStack keypairs are requested", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/openstack/networks": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the OpenStack networks", "operationId": "V1OpenStackNetworksGet", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "project for which OpenStack networks are requested", "name": "project", "in": "query" }, { "type": "string", "description": "region for which OpenStack networks are requested", "name": "region", "in": "query" }, { "type": "string", "description": "domain for which OpenStack networks are requested", "name": "domain", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } }, "/v1/clouds/openstack/projects": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the OpenStack projects", "operationId": "V1OpenStackProjectsGet", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/openstack/regions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the OpenStack regions", "operationId": "V1OpenStackRegionsGet", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/tencent/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate the specified Tencent account credentials", "operationId": "V1TencentAccountValidate", "parameters": [ { "description": "Request payload to validate tencent cloud account", "name": "account", "in": "body", "required": true, "schema": { "type": "object", "required": [ "secretId", "secretKey" ], "properties": { "secretId": { "description": "Tencent api secretID", "type": "string" }, "secretKey": { "description": "Tencent api secret key", "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" } } } } } }, "/v1/clouds/tencent/regions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Tencent regions for the specified account", "operationId": "V1TencentRegions", "parameters": [ { "type": "string", "description": "Uid for the specific Tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/tencent/regions/{region}/instancetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Tencent instance types", "operationId": "V1TencentInstanceTypes", "parameters": [ { "type": "string", "description": "Region for which tencent instances are listed", "name": "region", "in": "path", "required": true }, { "type": "number", "format": "double", "description": "Filter for instances having cpu greater than or equal", "name": "cpuGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having memory greater than or equal", "name": "memoryGtEq", "in": "query" }, { "type": "number", "format": "double", "description": "Filter for instances having gpu greater than or equal", "name": "gpuGtEq", "in": "query" }, { "type": "string", "description": "Uid for the specific tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/tencent/regions/{region}/keypairs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of keypairs for the specified account", "operationId": "V1TencentKeypairs", "parameters": [ { "type": "string", "description": "Region for which keypairs are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/tencent/regions/{region}/securitygroups": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of secutity groups for the specified account", "operationId": "V1TencentSecurityGroups", "parameters": [ { "type": "string", "description": "Region for which security groups are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/tencent/regions/{region}/storagetypes": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Tencent storage types", "operationId": "V1TencentStorageTypes", "parameters": [ { "type": "string", "description": "Region for which tencent storages are listed", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Zone for which tencent storages are listed", "name": "zone", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } } } } }, "/v1/clouds/tencent/regions/{region}/vpcs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of VPCs for the specified account", "operationId": "V1TencentVpcs", "parameters": [ { "type": "string", "description": "Region for which VPCs are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/tencent/regions/{region}/zones": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Tencent availability zones for the specified region", "operationId": "V1TencentZones", "parameters": [ { "type": "string", "description": "Region for which zones are requested", "name": "region", "in": "path", "required": true }, { "type": "string", "description": "Uid for the specific Tencent cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "/v1/clouds/vsphere/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if account is valid else error.", "tags": [ "v1" ], "summary": "Check if Vsphere account is valid", "operationId": "V1VsphereAccountValidate", "parameters": [ { "description": "Request payload for VSphere cloud account", "name": "vsphereCloudAccount", "in": "body", "required": true, "schema": { "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" } } } }, { "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/clouds/vsphere/datacenters": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the vsphere data centers", "operationId": "V1VsphereDatacenters", "parameters": [ { "type": "string", "description": "Uid for the specific OpenStack cloud account", "name": "cloudAccountUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } }, "/v1/clouds/vsphere/datacenters/{uid}/computeclusters/{computecluster}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the resources for vsphere compute cluster", "operationId": "V1VsphereComputeClusterResources", "parameters": [ { "type": "string", "description": "Uid for the specific VSphere cloud account", "name": "cloudAccountUid", "in": "query", "required": true }, { "type": "string", "description": "computecluster for which resources is requested", "name": "computecluster", "in": "path", "required": true }, { "type": "string", "description": "VSphere datacenter uid for which resources is requested", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "/v1/clouds/vsphere/env": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves vsphere env", "operationId": "V1VsphereEnv", "parameters": [ { "description": "Request payload for VSphere cloud account", "name": "vsphereCloudAccount", "in": "body", "required": true, "schema": { "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" } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Vsphere environment entity", "type": "object", "properties": { "version": { "description": "Version of vsphere environment", "type": "string" } } } } } } }, "/v1/clouds/{cloudType}/instance/spotprice": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves the cloud instance spot price based on zone and timestamp for a specific cloud", "operationId": "V1CloudInstanceSpotPriceGet", "parameters": [ { "type": "string", "description": "Cloud type [aws/azure/gcp/tencent]", "name": "cloudType", "in": "path", "required": true }, { "type": "string", "description": "Instance type for a specific cloud type", "name": "instanceType", "in": "query", "required": true }, { "type": "string", "description": "Availability zone for a specific cloud type", "name": "zone", "in": "query", "required": true }, { "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": "timestamp", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } }, "/v1/clouds/{cloud}/compute/{type}/rate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the cloud compute rate", "operationId": "V1CloudComputeRate", "parameters": [ { "type": "string", "description": "cloud for which compute rate is requested", "name": "cloud", "in": "path", "required": true }, { "type": "string", "description": "instance type for which compute rate is requested", "name": "type", "in": "path", "required": true }, { "type": "string", "description": "region for which compute rate is requested", "name": "region", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } }, "/v1/clouds/{cloud}/storage/{type}/rate": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the cloud storage rate", "operationId": "V1CloudStorageRate", "parameters": [ { "type": "string", "description": "cloud for which compute rate is requested", "name": "cloud", "in": "path", "required": true }, { "type": "string", "description": "storage type for which compute rate is requested", "name": "type", "in": "path", "required": true }, { "type": "string", "description": "region for which compute rate is requested", "name": "region", "in": "query", "required": true }, { "type": "integer", "description": "maxDiskType for which compute rate is requested", "name": "maxDiskType", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } }, "/v1/clustergroups": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Create cluster groups", "operationId": "v1ClusterGroupsCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } } } }, { "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/clustergroups/developerCredit/usage/{scope}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get cluster group developer credit usage by scope", "operationId": "v1ClusterGroupsDeveloperCreditUsageGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Cluster group developer credit usage", "schema": { "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 } } } } } } } }, "parameters": [ { "enum": [ "system", "tenant" ], "type": "string", "name": "scope", "in": "path", "required": true } ] }, "/v1/clustergroups/hostCluster": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster groups host cluster summary", "operationId": "v1ClusterGroupsHostClusterSummary", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster groups of host cluster type summary", "schema": { "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 } } } } } } } } } } } }, "/v1/clustergroups/hostCluster/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster groups host cluster metadata", "operationId": "v1ClusterGroupsHostClusterMetadata", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster groups host cluster metadata items", "schema": { "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" } } } } } } } } } }, "/v1/clustergroups/validate/name": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates the cluster groups name", "operationId": "v1ClusterGroupsValidateName", "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/clustergroups/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster groups", "operationId": "v1ClusterGroupsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified cluster group", "operationId": "v1ClusterGroupsUidDelete", "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/clustergroups/{uid}/hostCluster": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates cluster reference and host cluster config", "operationId": "v1ClusterGroupsUidHostClusterUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/clustergroups/{uid}/meta": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified cluster groups meta", "operationId": "v1ClusterGroupsUidMetaUpdate", "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/clustergroups/{uid}/packs/resolvedValues": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified clustergroup's profile packs resolved values", "operationId": "v1ClusterGroupsUidPacksResolvedValuesGet", "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 group 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/clustergroups/{uid}/profiles": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the associated profiles of a specified cluster group", "operationId": "v1ClusterGroupsUidProfilesGet", "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": "Updates the specified cluster groups profiles", "operationId": "v1ClusterGroupsUidProfilesUpdate", "parameters": [ { "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": "ClusterGroup uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/clusterprofiles": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a cluster profile", "operationId": "v1ClusterProfilesCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/clusterprofiles/bulk": { "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes list of cluster profiles", "operationId": "v1ClusterProfilesBulkDelete", "parameters": [ { "name": "body", "in": "body", "schema": { "required": [ "uids" ], "properties": { "uids": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } }, "/v1/clusterprofiles/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports a cluster profile", "operationId": "v1ClusterProfilesImport", "parameters": [ { "type": "boolean", "description": "If true then cluster profile will be published post successful import", "name": "publish", "in": "query" }, { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/clusterprofiles/import/file": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Imports a cluster profile via file", "operationId": "v1ClusterProfilesImportFile", "parameters": [ { "type": "boolean", "description": "If true then cluster profile will be published post successful import", "name": "publish", "in": "query" }, { "type": "file", "description": "Cluster profile import file", "name": "importFile", "in": "formData" }, { "enum": [ "yaml", "json" ], "type": "string", "default": "json", "description": "Cluster profile import file format [\"yaml\", \"json\"]", "name": "format", "in": "query" }, { "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/clusterprofiles/import/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates cluster profile import", "operationId": "v1ClusterProfilesImportValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Cluster profile import validated response", "schema": { "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" } } } } } } } } }, "/v1/clusterprofiles/macros": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of macros", "operationId": "v1MacrosList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "properties": { "macros": { "type": "array", "uniqueItems": true, "items": { "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } } } } } } } }, "/v1/clusterprofiles/validate/name": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Validates the cluster profile name and version", "tags": [ "v1" ], "summary": "Validates the cluster profile metadata", "operationId": "v1ClusterProfilesValidateNameVersion", "parameters": [ { "type": "string", "description": "Cluster profile name", "name": "name", "in": "query" }, { "type": "string", "description": "Cluster profile version", "name": "version", "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/clusterprofiles/validate/packs": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates cluster profile packs", "operationId": "v1ClusterProfilesValidatePacks", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Cluster profile packs validation response", "schema": { "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" } } } } } } } } } } } }, "/v1/clusterprofiles/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns a specified cluster profile", "operationId": "v1ClusterProfilesGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified cluster profile", "operationId": "v1ClusterProfilesUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 cluster profile", "operationId": "v1ClusterProfilesDelete", "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Comma seperated pack meta such as schema, presets", "name": "includePackMeta", "in": "query" } ] }, "/v1/clusterprofiles/{uid}/clone": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a clone of the specified cluster profile", "operationId": "v1ClusterProfilesUidClone", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/clone/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Validates the cloned cluster profile name, version and target project uid", "tags": [ "v1" ], "summary": "Validates the cluster profile clone", "operationId": "v1ClusterProfilesUidCloneValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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 profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/export": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Export the specified cluster profile", "operationId": "V1ClusterProfilesUidExport", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Exports cluster profile as a file", "schema": { "type": "string", "format": "binary" }, "headers": { "Content-Disposition": { "type": "string" } } } } }, "parameters": [ { "type": "string", "description": "Cluster profile uid", "name": "uid", "in": "path", "required": true }, { "enum": [ "yaml", "json" ], "type": "string", "default": "json", "description": "Cluster profile export file format [ \"yaml\", \"json\" ]", "name": "format", "in": "query" } ] }, "/v1/clusterprofiles/{uid}/export/terraform": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Downloads the specified cluster profile", "operationId": "V1ClusterProfilesUidExportTerraform", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Downloads cluster profile export file", "schema": { "type": "string", "format": "binary" }, "headers": { "Content-Disposition": { "type": "string" } } } } }, "parameters": [ { "type": "string", "description": "Cluster profile uid", "name": "uid", "in": "path", "required": true }, { "enum": [ "yaml", "json" ], "type": "string", "default": "yaml", "description": "Cluster profile export file format [ \"yaml\", \"json\" ]", "name": "format", "in": "query" } ] }, "/v1/clusterprofiles/{uid}/metadata": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified cluster profile metadata", "operationId": "v1ClusterProfilesUidMetadataUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/packRefs": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates cluster profile packs ref", "operationId": "v1ClusterProfilesPacksRefUpdate", "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile notification uid", "name": "notify", "in": "query" }, { "name": "body", "in": "body", "schema": { "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" } } } } ] }, "/v1/clusterprofiles/{uid}/packs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster profile packs", "operationId": "v1ClusterProfilesUidPacksGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds a new pack to the specified cluster profile and returns the created pack uid", "operationId": "v1ClusterProfilesUidPacksAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Comma seperated pack meta such as schema, presets", "name": "includePackMeta", "in": "query" } ] }, "/v1/clusterprofiles/{uid}/packs/manifests": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster profile pack manifests", "operationId": "v1ClusterProfilesUidPacksManifestsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Comma seperated pack meta such as schema, presets", "name": "includePackMeta", "in": "query" } ] }, "/v1/clusterprofiles/{uid}/packs/resolvedValues": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster profile packs resolved values", "operationId": "v1ClusterProfilesUidPacksResolvedValuesGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "description": "Pack resolved values", "properties": { "resolved": { "description": "Pack resolved values map", "type": "object", "additionalProperties": { "type": "string" } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster profile uid", "name": "uid", "in": "path", "required": true }, { "name": "body", "in": "body", "schema": { "description": "Pack params request payload", "properties": { "references": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } ] }, "/v1/clusterprofiles/{uid}/packs/{packName}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster profile pack", "operationId": "V1ClusterProfilesUidPacksNameGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified pack information in the cluster profile", "operationId": "v1ClusterProfilesUidPacksNameUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 pack information in the cluster profile", "operationId": "v1ClusterProfilesUidPacksNameDelete", "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile pack name", "name": "packName", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/packs/{packName}/config": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster profile pack configuration", "operationId": "v1ClusterProfilesUidPacksConfigGet", "parameters": [ { "type": "string", "description": "cluster profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile pack name", "name": "packName", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile pack uid", "name": "packUid", "in": "query", "required": true }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster profile pack configurations", "schema": { "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" } } } } } } } } } } } }, "/v1/clusterprofiles/{uid}/packs/{packName}/manifests": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the associated manifests for the specified profile's pack", "operationId": "v1ClusterProfilesUidPacksUidManifests", "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", "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" } } } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Adds manifest to the profiles packs and returns the added manifests uid", "operationId": "v1ClusterProfilesUidPacksNameManifestsAdd", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Manifest request payload", "properties": { "content": { "description": "Manifest content", "type": "string" }, "name": { "description": "Manifest name", "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile pack name", "name": "packName", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/packs/{packName}/manifests/{manifestUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster profile pack manifest", "operationId": "v1ClusterProfilesUidPacksNameManifestsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "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", "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified manifest of the profile's pack", "operationId": "v1ClusterProfilesUidPacksNameManifestsUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Manifest request payload", "properties": { "content": { "description": "Manifest content", "type": "string" }, "name": { "description": "Manifest name", "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 cluster profile pack manifest", "operationId": "v1ClusterProfilesUidPacksNameManifestsUidDelete", "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 profile uid", "name": "uid", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile pack name", "name": "packName", "in": "path", "required": true }, { "type": "string", "description": "Cluster profile pack manifest uid", "name": "manifestUid", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/publish": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Publish the draft cluster profile with next revision, the current draft cluster profile will be marked to published\nand the draft cluster profile will be set to null in the cluster profile template.\n", "tags": [ "v1" ], "summary": "Publishes the specified cluster profile", "operationId": "v1ClusterProfilesPublish", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "204": { "description": "Cluster profile published successfully" } } }, "parameters": [ { "type": "string", "description": "Cluster profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/spc/download": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Downloads the specified cluster profile", "operationId": "v1ClusterProfilesUidSpcDownload", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Download cluster profile archive file", "schema": { "type": "string", "format": "binary" }, "headers": { "Content-Disposition": { "type": "string" } } } } }, "parameters": [ { "type": "string", "description": "Cluster profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/clusterprofiles/{uid}/validate/packs": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates specified cluster profile packs", "operationId": "v1ClusterProfilesUidValidatePacks", "parameters": [ { "type": "string", "description": "Cluster profile uid", "name": "uid", "in": "path", "required": true }, { "name": "body", "in": "body", "schema": { "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" ] } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Cluster profile packs validation response", "schema": { "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" } } } } } } } } } } } }, "/v1/clusterprofiles/{uid}/variables": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieve a list of variables defined for the cluster profile", "operationId": "V1ClusterProfilesUidVariablesGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "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 } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the variables defined for a cluster profile", "operationId": "V1ClusterProfilesUidVariablesPut", "parameters": [ { "name": "body", "in": "body", "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 } } } } } } }, { "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 cluster profile variables", "operationId": "V1ClusterProfilesUidVariablesDelete", "parameters": [ { "name": "body", "in": "body", "schema": { "required": [ "variables" ], "properties": { "variables": { "description": "Array of variable names", "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 deleted successfully" } } }, "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update specific variables defined for a cluster profile", "operationId": "V1ClusterProfilesUidVariablesPatch", "parameters": [ { "name": "body", "in": "body", "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 } } } } } } }, { "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 profile uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/appDeployments": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of application deployments filter summary Supported filter fields - [\"appDeploymentName\", \"clusterUid\", \"tags\"] Supported sort fields - [\"appDeploymentName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", "operationId": "v1DashboardAppDeployments", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of application deployment summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/appProfiles": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of application profiles filter summary Supported filter fields - [\"profileName\", \"tags\"] Supported sort fields - [\"profileName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", "operationId": "v1DashboardAppProfiles", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of application profiles summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/appProfiles/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of application profile metadata", "operationId": "v1DashboardAppProfilesMetadata", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of application profile summary items", "schema": { "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" } } } } } } } } } } } }, "/v1/dashboard/appliances/metadata": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of edgehosts summary", "operationId": "v1EdgeHostsMetadata", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of edgehost summary items", "schema": { "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" ] } } } } } } } } } } } }, "/v1/dashboard/cloudaccounts/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cloud accounts metadata", "operationId": "v1DashboardCloudAccountsMetadata", "parameters": [ { "type": "string", "name": "environment", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cloud accounts summary items", "schema": { "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" } } } } } } } } } } } }, "/v1/dashboard/clustergroups/{uid}/hostClusters": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster summary for a given cluster group", "operationId": "v1ClusterGroupUidHostClustersSummary", "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/clustergroups/{uid}/virtualClusters": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster summary for a given cluster group", "operationId": "v1ClusterGroupUidVirtualClustersSummary", "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/clusterprofiles": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster profiles filter summary Supported filter fields - [\"profileName\", \"tags\", \"profileType\", \"environment\"] Supported sort fields - [\"profileName\", \"environment\", \"profileType\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", "operationId": "v1ClusterProfilesFilterSummary", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster profiles summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/clusterprofiles/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster profiles metadata", "operationId": "v1ClusterProfilesMetadata", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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" } } } } } } } } } } } }, "/v1/dashboard/clusterprofiles/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a specified cluster profile summary", "operationId": "v1ClusterProfilesUidSummary", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Cluster profile summary response", "schema": { "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 } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/edgehosts/search": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Edgehosts summary with provided search filter. Supported fields as per schema /v1/dashboard/edgehosts/search/schema", "operationId": "v1DashboardEdgehostsSearch", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of edgehost summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/edgehosts/search/schema": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a schema for the Edgehost search filter", "operationId": "v1DashboardEdgehostsSearchSchemaGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of schema items", "schema": { "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 } } } } } } } } } } } }, "/v1/dashboard/pcgs/search": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of PCG summary with provided search filter. Supported fields as per schema /v1/dashboard/pcgs/search/schema", "operationId": "v1DashboardPcgsSearchSummary", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/pcgs/search/schema": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a schema for the PCG search filter", "operationId": "v1DashboardPcgSearchSchemaGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of schema items", "schema": { "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 } } } } } } } } } } } }, "/v1/dashboard/projects": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "operationId": "v1ProjectsFilterSummary", "parameters": [ { "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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of project filter summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/projects/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of projects metadata", "operationId": "v1ProjectsMetadata", "parameters": [ { "type": "string", "description": "Name of the project", "name": "name", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of project metadata items", "schema": { "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" } } } } } } } } } } } }, "/v1/dashboard/spectroclusters/cost": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves spectro clusters cloud cost summary information", "operationId": "v1DashboardSpectroClustersCostSummary", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of resources cloud cost summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/spectroclusters/filters/workspace": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of running, non rbac configured clusters in a workspace", "operationId": "v1SpectroClustersFiltersWorkspace", "parameters": [ { "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 cluster summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/spectroclusters/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster summary metadata", "operationId": "v1SpectroClustersMetadataGet", "parameters": [ { "enum": [ "hostclusters", "strictHostclusters" ], "type": "string", "name": "quickFilter", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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" } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster summary", "operationId": "v1SpectroClustersMetadata", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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" } } } } } } } } } }, "/v1/dashboard/spectroclusters/metadata/search": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster metadata with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"clusterState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", "operationId": "v1SpectroClustersMetadataSearch", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary meta items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/spectroclusters/metadata/search/schema": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a schema for the cluster metadata search filter", "operationId": "v1SpectroClustersMetadataSearchSchema", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster meta schema items", "schema": { "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 } } } } } } } } } } } }, "/v1/dashboard/spectroclusters/repaveStatus": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of clusters with the desired repave state", "operationId": "v1DashboardSpectroClustersRepaveList", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "enum": [ "Pending", "Approved", "Reverted" ], "type": "string", "default": "Pending", "name": "repaveState", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/spectroclusters/resources/consumption": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves spectro clusters resource consumption", "operationId": "v1SpectroClustersResourcesConsumption", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of resource consumption data items", "schema": { "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 } } } } } } } } } } }, "/v1/dashboard/spectroclusters/resources/cost": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves spectro clusters resources cost summary information", "operationId": "v1SpectroClustersResourcesCostSummary", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of resources cost summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/spectroclusters/resources/usage": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves spectro clusters resources usage summary information", "operationId": "v1SpectroClustersResourcesUsageSummary", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of resources usage summary items", "schema": { "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" } } } } } } } } } } } }, "/v1/dashboard/spectroclusters/search": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of cluster summary with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"memoryUsage\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", "operationId": "v1SpectroClustersSearchFilterSummary", "parameters": [ { "maximum": 50, "type": "integer", "format": "int64", "description": "limit is a maximum number of responses to return for a list call. 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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster summary items", "schema": { "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 } } } } } } } } }, "/v1/dashboard/spectroclusters/search/export": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Export and download the list of cluster summary with matching search filter and download as a file(csv)", "operationId": "v1DashboardClustersSearchSummaryExportGet", "parameters": [ { "type": "string", "name": "encodedFilter", "in": "query" }, { "enum": [ "csv" ], "type": "string", "default": "csv", "name": "format", "in": "query" }, { "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" } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Export the list of cluster summary with matching search filter and download as a file(csv) Supported sort fields - [\"environment\", \"clusterName\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", "operationId": "v1DashboardClustersSearchSummaryExport", "parameters": [ { "enum": [ "csv" ], "type": "string", "default": "csv", "name": "format", "in": "query" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "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" } } } } } }, "/v1/dashboard/spectroclusters/search/input": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a supported input values for the cluster search filter", "operationId": "v1DashboardSpectroClustersSearchInput", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster search filter input items", "schema": { "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 } } } } } } } } } }, "/v1/dashboard/spectroclusters/search/schema": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a schema for the cluster search filter", "operationId": "v1SpectroClustersSearchSchema", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster filter schema items", "schema": { "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 } } } } } } } } } } } }, "/v1/dashboard/spectroclusters/vms": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Virtual machine enabled clusters", "operationId": "V1DashboardVMEnabledClustersList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of schema items", "schema": { "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" } } } } } } } } } } } }, "/v1/dashboard/spectroclusters/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster summary", "operationId": "v1SpectroClustersSummaryUid", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An spectro cluster summary", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/cost": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves the specified cluster cost summary", "operationId": "v1SpectroClustersUidCostSummary", "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" }, { "minimum": 60, "type": "integer", "format": "int32", "description": "period in minutes, group the data point by the specified period", "name": "period", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An spectro cluster cost summary", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/overview": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified cluster summary overview", "operationId": "v1SpectroClustersSummaryUidOverview", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An spectro cluster summary overview", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/resources/consumption": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified spectro cluster resource consumption", "operationId": "v1SpectroClustersUidResourcesConsumption", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of resource consumption data items", "schema": { "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 } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workloads", "operationId": "v1DashboardSpectroClustersUidWorkloads", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workloads", "schema": { "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 } } } } } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/clusterrolebinding": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload clusterrolebindings", "operationId": "v1DashboardSpectroClustersUidWorkloadsClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload clusterrolebindings", "schema": { "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" ] } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/cronjob": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload cronjobs", "operationId": "v1DashboardSpectroClustersUidWorkloadsCronJob", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload cronjobs", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/daemonset": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload daemonsets", "operationId": "v1DashboardSpectroClustersUidWorkloadsDaemonSet", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload daemonsets", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/deployment": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload deployments", "operationId": "v1DashboardSpectroClustersUidWorkloadsDeployment", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload deployments", "schema": { "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 } } } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/job": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload jobs", "operationId": "v1DashboardSpectroClustersUidWorkloadsJob", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload jobs", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/namespace": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload namespaces", "operationId": "v1DashboardSpectroClustersUidWorkloadsNamespace", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload namespaces", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/pod": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload pods", "operationId": "v1DashboardSpectroClustersUidWorkloadsPod", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload pods", "schema": { "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" } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/rolebinding": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload rolebindings", "operationId": "v1DashboardSpectroClustersUidWorkloadsRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload rolebindings", "schema": { "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" ] } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/spectroclusters/{uid}/workloads/statefulset": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified cluster workload statefulsets", "operationId": "v1DashboardSpectroClustersUidWorkloadsStatefulSet", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster workloads spec", "type": "object", "properties": { "filter": { "description": "Cluster workloads filter", "type": "object", "properties": { "namespaces": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of cluster workload statefulsets", "schema": { "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 } } } } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of workspace", "operationId": "v1DashboardWorkspacesList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of workspace", "schema": { "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" } } } } } } }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/clusterrolebinding": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload clusterrolebindings", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload clusterrolebindings", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/cronjob": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload cronjobs", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsCronJob", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload cronjobs", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/daemonset": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload daemonsets", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDaemonSet", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload daemonsets", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/deployment": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload deployments", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDeployment", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload deployments", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/job": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload jobs", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsJob", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload jobs", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/namespace": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload namespaces", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsNamespace", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload namespaces", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/pod": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload pods", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsPod", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload pods", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/rolebinding": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload rolebindings", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload rolebindings", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/statefulset": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves specified workspace clusters workload statefulsets", "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsStatefulSet", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of clusters workload statefulsets", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/datasinks/cloudwatch": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Sync data to cloud watch", "tags": [ "v1" ], "summary": "sync data to cloud watch", "operationId": "V1DataSinksCloudWatchSink", "parameters": [ { "description": "Request payload for cloud watch config", "name": "dataSinkCloudWatchConfig", "in": "body", "required": true, "schema": { "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" } } } } } }, { "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/edgehosts": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Create the edge host device", "operationId": "v1EdgeHostDevicesCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/edgehosts/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of edge hosts metadata matching the filter condition", "operationId": "v1EdgeHostsMetadataQuickFilterGet", "parameters": [ { "enum": [ "libvirt", "edge-native", "vsphere" ], "type": "string", "name": "type", "in": "query" }, { "enum": [ "unusedEdgeHosts" ], "type": "string", "name": "quickFilter", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of edge host metadata", "schema": { "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" } } } } } } } } } }, "/v1/edgehosts/register": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Registers the edge host device", "operationId": "v1EdgeHostDevicesRegister", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" ] } } } } } } } } }, "/v1/edgehosts/tags": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of edge hosts tags", "operationId": "v1EdgeHostsTagsGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of edge hosts tags", "schema": { "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string" } } } } } } } }, "/v1/edgehosts/tokens": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of edge tokens", "operationId": "v1EdgeTokensList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of edge tokens", "schema": { "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 } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Create the edge token", "operationId": "v1EdgeTokensCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/edgehosts/tokens/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified edge token", "operationId": "v1EdgeTokensUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified edge token", "operationId": "v1EdgeTokensUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 edge token", "operationId": "v1EdgeTokensUidDelete", "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": "Edge token uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/edgehosts/tokens/{uid}/state": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Revoke or re-activate the edge token access", "operationId": "v1EdgeTokensUidState", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Edge token active state", "properties": { "isActive": { "description": "Set to 'true', if the token is active", "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" } } }, "parameters": [ { "type": "string", "description": "Edge token uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/edgehosts/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified edge host device", "operationId": "v1EdgeHostDevicesUidGet", "parameters": [ { "type": "boolean", "default": false, "description": "resolve pack values if set to true", "name": "resolvePackValues", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" ] } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified edge host device", "operationId": "v1EdgeHostDevicesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } } } }, { "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 edge host device", "operationId": "v1EdgeHostDevicesUidDelete", "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/edgehosts/{uid}/cluster/associate": { "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deassociate the clusters to the edge host", "operationId": "v1EdgeHostDevicesUidClusterDeassociate", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "204": { "description": "The resource was deleted successfully" } } }, "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Associate the clusters to the edge host", "operationId": "v1EdgeHostDevicesUidClusterAssociate", "parameters": [ { "name": "body", "in": "body", "schema": { "type": "object", "properties": { "clusterUid": { "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/edgehosts/{uid}/health": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the edge host health", "operationId": "v1EdgeHostDevicesHealthUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", "properties": { "agentVersion": { "type": "string" }, "message": { "type": "string" }, "state": { "type": "string", "enum": [ "healthy", "unhealthy" ] } } } }, { "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/edgehosts/{uid}/hostCheckSum": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the specified edge host device host check sum", "operationId": "v1EdgeHostDeviceHostCheckSumUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "type": "object", "properties": { "hostCheckSum": { "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/edgehosts/{uid}/hostPairingKey": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the specified edge host device host pairing key", "operationId": "v1EdgeHostDeviceHostPairingKeyUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "type": "object", "properties": { "hostPairingKey": { "type": "string", "format": "password" } } } }, { "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/edgehosts/{uid}/meta": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified edge host device meta", "operationId": "v1EdgeHostDevicesUidMetaUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/edgehosts/{uid}/pack/manifests/{manifestUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified edge host's manifest", "operationId": "v1EdgeHostDevicesUidPackManifestsUidGet", "parameters": [ { "type": "string", "description": "edge host 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/edgehosts/{uid}/packs/status": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Patch update specified edge host's packs status", "operationId": "v1EdgeHostDevicesUidPacksStatusPatch", "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", "name": "uid", "in": "path", "required": true } ] }, "/v1/edgehosts/{uid}/profiles": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the associated profiles of a specified edge host device", "operationId": "v1EdgeHostDevicesUidProfilesGet", "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 edge host device", "operationId": "v1EdgeHostDevicesUidProfilesUpdate", "parameters": [ { "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", "name": "uid", "in": "path", "required": true } ] }, "/v1/edgehosts/{uid}/reset": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Reset the cluster through edge host", "operationId": "V1EdgeHostsUidReset", "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": "Edge host uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/edgehosts/{uid}/spc/download": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Download the specified edge host device spc", "operationId": "v1EdgeHostDevicesUidSpcDownload", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "download spc archive file", "schema": { "type": "string", "format": "binary" }, "headers": { "Content-Disposition": { "type": "string" } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/edgehosts/{uid}/vsphere/properties": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified edge host device vsphere properties", "operationId": "v1EdgeHostDevicesUidVspherePropertiesUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "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/events/components": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns a paginated list of component events based on request parameters", "tags": [ "v1" ], "summary": "Returns a paginated list of component events based on request parameters", "operationId": "v1EventsComponentsList", "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 component events items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Creates a component event", "tags": [ "v1" ], "summary": "Creates a component event", "operationId": "v1EventsComponentsCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/events/components/bulk": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Creates the component events in bulk", "tags": [ "v1" ], "summary": "Creates the component events in bulk", "operationId": "v1EventsComponentsCreateBulk", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "201": { "description": "Created successfully", "schema": { "type": "array", "uniqueItems": true, "items": { "type": "object", "required": [ "uid" ], "properties": { "uid": { "type": "string" } } } } } } } }, "/v1/events/components/{objectKind}/{objectUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns a list of components events for the specified related object", "tags": [ "v1" ], "summary": "Returns a list of components events for the specified related object", "operationId": "v1EventsComponentsObjTypeUidList", "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 component event items", "schema": { "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 } } } } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Delete all the components events for the specified related object", "operationId": "v1EventsComponentsObjTypeUidDelete", "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": [ { "enum": [ "spectrocluster", "edgehost" ], "type": "string", "description": "Describes the related object uid for which events has to be fetched", "name": "objectKind", "in": "path", "required": true }, { "type": "string", "description": "Describes the related object kind for which events has to be fetched", "name": "objectUid", "in": "path", "required": true } ] }, "/v1/features": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves the list of features", "operationId": "v1FeaturesList", "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": "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" } } } } } } } } } } } }, "/v1/features/{uid}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update a feature", "operationId": "v1FeaturesUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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": "Specify the feature uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/filters": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns a list of Filters", "operationId": "v1FiltersList", "parameters": [ { "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 filters", "schema": { "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 } } } } } } } } }, "/v1/filters/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns a list of Filters metadata", "operationId": "v1FiltersMetadata", "parameters": [ { "type": "string", "description": "filterType can be - [tag, meta, resource]", "name": "filterType", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of filters", "schema": { "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" } } } } } } } } } }, "/v1/filters/tag": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a Tag filter", "operationId": "v1TagFiltersCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/filters/tag/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Filter object", "operationId": "v1TagFilterUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "A Filter object", "schema": { "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" } } } } } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates a Tag filter", "operationId": "v1TagFilterUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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": "Delete the specified Filter object", "operationId": "v1TagFilterUidDelete", "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/metrics/{resourceKind}/values": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns all the metrics for a given resource kind", "tags": [ "v1" ], "summary": "Retrieves the list of metrics for a specified resource kind", "operationId": "v1MetricsList", "parameters": [ { "enum": [ "pod", "namespace", "spectrocluster", "machine", "project" ], "type": "string", "name": "resourceKind", "in": "path", "required": true }, { "type": "string", "default": "all", "name": "metricKind", "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": "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": "integer", "format": "int32", "default": 1, "name": "period", "in": "query" }, { "type": "boolean", "default": false, "description": "Deprecated. includeMasterMachines in boolean, group the data point by including control plane nodes if set to true", "name": "includeMasterMachines", "in": "query" }, { "type": "boolean", "default": false, "description": "includeControlPlaneMachines in boolean, group the data point by including control plane nodes if set to true", "name": "includeControlPlaneMachines", "in": "query" }, { "type": "boolean", "default": false, "description": "if true then api returns only aggregation values, else api returns all data points by default", "name": "discrete", "in": "query" }, { "type": "string", "name": "spectroClusterUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of metric items", "schema": { "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" } } } } } } } } } } } } }, "/v1/metrics/{resourceKind}/{resourceUid}/values": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the metrics for a specified resource uid", "operationId": "v1MetricsUidList", "parameters": [ { "enum": [ "pod", "namespace", "spectrocluster", "machine", "project" ], "type": "string", "name": "resourceKind", "in": "path", "required": true }, { "type": "string", "name": "resourceUid", "in": "path", "required": true }, { "type": "string", "default": "all", "description": "multiple metric kinds can be provided with comma separated", "name": "metricKind", "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": "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": "integer", "format": "int32", "default": 1, "description": "period in minutes, group the data point by the specified period", "name": "period", "in": "query" }, { "type": "boolean", "default": false, "description": "Deprecated. includeMasterMachines in boolean, group the data point by including control plane nodes if set to true", "name": "includeMasterMachines", "in": "query" }, { "type": "boolean", "default": false, "description": "includeControlPlaneMachines in boolean, group the data point by including control plane nodes if set to true", "name": "includeControlPlaneMachines", "in": "query" }, { "type": "boolean", "default": false, "description": "if true then api returns only aggregation values, else api returns all data points by default", "name": "discrete", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of metric items", "schema": { "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" } } } } } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the metrics of the specified resource", "operationId": "v1MetricsUidDelete", "parameters": [ { "enum": [ "pod", "namespace", "spectrocluster", "machine", "project" ], "type": "string", "name": "resourceKind", "in": "path", "required": true }, { "type": "string", "name": "resourceUid", "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 deleted successfully" } } } }, "/v1/notifications/": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns a paginated list of notifications based on request parameters", "tags": [ "v1" ], "summary": "Returns a paginated list of notifications based on request parameters", "operationId": "v1NotificationsList", "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" } ], "responses": { "200": { "description": "An array of notification items", "schema": { "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 } } } } } } } } }, "/v1/notifications/events": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Creates a notification event", "tags": [ "v1" ], "summary": "Creates a notification event", "operationId": "v1NotificationsEventCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" ] } } } } ], "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/notifications/{objectKind}/{objectUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns a list of notifications for the specified related object", "tags": [ "v1" ], "summary": "Returns a list of notifications for the specified related object", "operationId": "v1NotificationsObjTypeUidList", "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" } ], "responses": { "200": { "description": "An array of component event items", "schema": { "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 } } } } } } } }, "parameters": [ { "enum": [ "spectrocluster", "clusterprofile", "appdeployment" ], "type": "string", "description": "Describes the related object kind for which notifications have to be fetched", "name": "objectKind", "in": "path", "required": true }, { "type": "string", "description": "Describes the related object uid for which notifications have to be fetched", "name": "objectUid", "in": "path", "required": true }, { "type": "string", "description": "Describes a way to fetch \"done\" notifications", "name": "isDone", "in": "query" } ] }, "/v1/notifications/{uid}/ack": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Updates the specified notification for the acknowledgment", "tags": [ "v1" ], "summary": "Updates the specified notification for the acknowledgment", "operationId": "v1NotificationsUidAck", "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "description": "Describes acknowledging notification uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/notifications/{uid}/done": { "patch": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Updates the specified notification action as done", "tags": [ "v1" ], "summary": "Updates the specified notification action as done", "operationId": "v1NotificationsUidDone", "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "description": "Describes notification uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of overlords owned by the tenant", "operationId": "v1OverlordsList", "parameters": [ { "type": "string", "name": "name", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } } } }, "/v1/overlords/maas/manifest": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the manifests required for the private gateway installation", "operationId": "V1OverlordsMaasManifest", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "overlord manifest", "type": "object", "properties": { "manifest": { "type": "string" } } } } } }, "parameters": [ { "type": "string", "name": "pairingCode", "in": "query", "required": true } ] }, "/v1/overlords/maas/{uid}/account": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the maas cloudaccount for the private gateway", "operationId": "v1OverlordsUidMaasAccountUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "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 the maas cloudaccount for the private gateway", "operationId": "v1OverlordsUidMaasAccountCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "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/overlords/maas/{uid}/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "validate the maas cloudaccount for the private gateway", "operationId": "v1OverlordsUidMaasAccountValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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": "" } } } } } } }, { "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/overlords/maas/{uid}/cloudconfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the maas cloud config for the private gateway", "operationId": "V1OverlordsUidMaasCloudConfigUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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 the maas cloud config for the private gateway", "operationId": "V1OverlordsUidMaasCloudConfigCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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/overlords/maas/{uid}/clusterprofile": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified maas private gateway cluster profile", "operationId": "v1OverlordsUidMaasClusterProfile", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords/migrate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "migrate all the clusters from source overlord to target overlord", "operationId": "V1OverlordsMigrate", "parameters": [ { "name": "body", "in": "body", "schema": { "properties": { "sourceUid": { "type": "string" }, "targetUid": { "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" } } } }, "/v1/overlords/openstack/manifest": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the manifests required for the private gateway installation", "operationId": "v1OverlordsOpenStackManifest", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "overlord manifest", "type": "object", "properties": { "manifest": { "type": "string" } } } } } }, "parameters": [ { "type": "string", "name": "pairingCode", "in": "query", "required": true } ] }, "/v1/overlords/openstack/{uid}/account": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the OpenStack cloudaccount for the private gateway", "operationId": "v1OverlordsUidOpenStackAccountUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "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 the OpenStack cloudaccount for the private gateway", "operationId": "v1OverlordsUidOpenStackAccountCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "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/overlords/openstack/{uid}/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "validate the OpenStack cloudaccount for the private gateway", "operationId": "v1OverlordsUidOpenStackAccountValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/overlords/openstack/{uid}/cloudconfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the OpenStack cloud config for the private gateway", "operationId": "v1OverlordsUidOpenStackCloudConfigUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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 the OpenStack cloud config for the private gateway", "operationId": "v1OverlordsUidOpenStackCloudConfigCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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/overlords/openstack/{uid}/clusterprofile": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified OpenStack private gateway cluster profile", "operationId": "v1OverlordsUidOpenStackClusterProfile", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords/pairing/code": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the pairing code for the private gateway", "operationId": "v1OverlordsPairingCode", "parameters": [ { "enum": [ "vsphere", "openstack", "maas" ], "type": "string", "name": "cloudType", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Pairing code response", "type": "object", "properties": { "pairingCode": { "type": "string" } } } } } } }, "/v1/overlords/vsphere/manifest": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the manifests required for the private gateway installation", "operationId": "v1OverlordsVsphereManifest", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "overlord manifest", "type": "object", "properties": { "manifest": { "type": "string" } } } } } }, "parameters": [ { "type": "string", "name": "pairingCode", "in": "query", "required": true } ] }, "/v1/overlords/vsphere/ova": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns overlord's ova information", "operationId": "v1OverlordsVsphereOvaGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Overload ova details", "type": "object", "properties": { "location": { "type": "string", "x-omitempty": false } } } } } } }, "/v1/overlords/vsphere/{uid}/account": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the vSphere cloudaccount for the private gateway", "operationId": "v1OverlordsUidVsphereAccountUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "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 the vSphere cloudaccount for the private gateway", "operationId": "v1OverlordsUidVsphereAccountCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } }, { "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/overlords/vsphere/{uid}/account/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "validate the vSphere cloudaccount for the private gateway", "operationId": "v1OverlordsUidVsphereAccountValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/overlords/vsphere/{uid}/cloudconfig": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the vSphere cloud config for the private gateway", "operationId": "v1OverlordsUidVsphereCloudConfigUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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 the vSphere cloud config for the private gateway", "operationId": "v1OverlordsUidVsphereCloudConfigCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } }, { "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/overlords/vsphere/{uid}/clusterprofile": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified vsphere private gateway cluster profile", "operationId": "v1OverlordsUidVsphereClusterProfile", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords/vsphere/{uid}/pools": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of IP Pools for the specified private gateway", "operationId": "v1OverlordsUidPoolsList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an IP pool defintion for the sepcified private gateway", "operationId": "v1OverlordsUidPoolCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/overlords/vsphere/{uid}/pools/{poolUid}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the private gateways's specified IP Pool data", "operationId": "v1OverlordsUidPoolUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 private gateways's specified IP Pool data", "operationId": "v1OverlordsUidPoolDelete", "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": "poolUid", "in": "path", "required": true } ] }, "/v1/overlords/vsphere/{uid}/properties/computecluster/resources": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves the vSphere computecluster resources for the specified private gateway's account", "operationId": "v1OverlordsUidVsphereComputeclusterRes", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "type": "string", "name": "datacenter", "in": "query", "required": true }, { "type": "string", "name": "computecluster", "in": "query", "required": true } ] }, "/v1/overlords/vsphere/{uid}/properties/datacenters": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves the vSphere datacenters \u0026 datacluster for the specified private gateway's account", "operationId": "v1OverlordsUidVsphereDatacenters", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified private gateway's for the given uid", "operationId": "v1OverlordsUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "delete the private gateway", "operationId": "v1OverlordsUidDelete", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Deleted response with message", "properties": { "msg": { "type": "string" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords/{uid}/metadata": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "update the private gateway's metadata", "operationId": "v1OverlordsUidMetadataUpdate", "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", "name": "uid", "in": "path", "required": true } ] }, "/v1/overlords/{uid}/reset": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "reset the private gateway by disaaociating the private gateway's resources", "operationId": "v1OverlordsUidReset", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Update response with message", "properties": { "msg": { "type": "string" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/packs": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of packs", "operationId": "v1PacksSummaryList", "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 pack summary items", "schema": { "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 } } } } } } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the packs", "operationId": "v1PacksSummaryDelete", "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": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Properties to send back after deletion operation", "properties": { "count": { "type": "integer", "format": "int64" }, "items": { "type": "object", "additionalProperties": { "type": "string" } } } } } } } }, "/v1/packs/search": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of packs based on filter", "operationId": "v1PacksSearch", "parameters": [ { "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" }, { "name": "body", "in": "body", "schema": { "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" ] } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of pack summary items", "schema": { "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 } } } } } } } } }, "/v1/packs/{packName}/registries/{registryUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of packs", "operationId": "v1PacksNameRegistryUidList", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "description": "Pack registry uid", "name": "registryUid", "in": "path", "required": true }, { "type": "string", "description": "Pack name", "name": "packName", "in": "path", "required": true }, { "type": "string", "default": "all", "description": "Pack cloud type", "name": "cloudType", "in": "query" }, { "type": "string", "description": "Pack layer", "name": "layer", "in": "query" }, { "type": "string", "description": "Comma seperated pack states. Example values are \"deprecated\" \"deprecated,disabled\". If states is not specified or empty then by default API will return all packs except \"disabled\" packs", "name": "states", "in": "query" } ] }, "/v1/packs/{packUid}/logo": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "image/png", "image/gif", "image/jpeg" ], "tags": [ "v1" ], "summary": "Returns the logo for a specified pack", "operationId": "v1PacksPackUidLogo", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "type": "string", "format": "binary" }, "headers": { "Cache-Control": { "type": "string", "description": "Cache control directive for the response" }, "Expires": { "type": "string" } } } } }, "parameters": [ { "type": "string", "description": "Pack uid", "name": "packUid", "in": "path", "required": true } ] }, "/v1/packs/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified pack", "operationId": "v1PacksUid", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "A pack for the specified uid", "schema": { "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" } } } } } } } } }, "parameters": [ { "type": "string", "description": "Pack uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/packs/{uid}/readme": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the readme of a specified pack", "operationId": "v1PacksUidReadme", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Readme describes the documentation of the specified pack", "schema": { "properties": { "readme": { "description": "Readme describes the documentation of the specified pack", "type": "string" } } } } } }, "parameters": [ { "type": "string", "description": "Pack uid", "name": "uid", "in": "path", "required": true } ] }, "/v1/pcg/selfHosted": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the private gateway manifest link", "operationId": "v1PcgSelfHosted", "parameters": [ { "name": "body", "in": "body", "schema": { "properties": { "cloudType": { "type": "string" }, "name": { "type": "string" } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "description": "Array of kubectl commands", "type": "object", "required": [ "kubectlCommands" ], "properties": { "kubectlCommands": { "type": "array", "uniqueItems": true, "items": { "type": "string" } }, "overlordUid": { "type": "string" } } } } } } }, "/v1/pcg/{uid}/register": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Registers the pcg", "operationId": "v1PcgUidRegister", "parameters": [ { "name": "pairingCode", "in": "body", "schema": { "description": "Pairing code response", "type": "object", "properties": { "pairingCode": { "type": "string" } } } }, { "type": "string", "name": "uid", "in": "path", "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/pcg/{uid}/services/ally/manifest": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Returns the pcg ally manifest", "operationId": "v1PcgUidAllyManifestGet", "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/pcg/{uid}/services/jet/manifest": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Returns the pcg jet manifest", "operationId": "v1PcgUidJetManifestGet", "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/permissions": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of permissions", "operationId": "v1PermissionsList", "parameters": [ { "enum": [ "system", "tenant", "project", "resource" ], "type": "string", "name": "scope", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of permissions", "schema": { "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" ] } } } } } } } }, "/v1/projects": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a project", "operationId": "v1ProjectsCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } }, { "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/projects/alerts": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of supported alerts for a project", "operationId": "v1ProjectsAlerts", "responses": { "200": { "description": "An array of alert components", "schema": { "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" } } } } } } } } } } }, "/v1/projects/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified project", "operationId": "v1ProjectsUidGet", "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified project", "operationId": "v1ProjectsUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified project", "operationId": "v1ProjectsUidDelete", "parameters": [ { "type": "boolean", "name": "cleanupProjectResources", "in": "query" }, { "name": "body", "in": "body", "schema": { "description": "Project delete request payload", "properties": { "deletingClusterDurationThresholdInMin": { "type": "integer", "format": "int32" }, "provisioningClusterDurationThresholdInMin": { "type": "integer", "format": "int32" } } } } ], "responses": { "204": { "description": "The resource was deleted successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/alerts/{component}": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Upsert the specified alert to the specified project", "operationId": "v1ProjectsUidAlertUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Create the specified alert to the specified project", "operationId": "v1ProjectsUidAlertCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } ], "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 specified alert to the specified project", "operationId": "v1ProjectsUidAlertDelete", "responses": { "204": { "description": "The resource was deleted successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "type": "string", "name": "component", "in": "path", "required": true } ] }, "/v1/projects/{uid}/alerts/{component}/{alertUid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get the specified alert of the specified project", "operationId": "v1ProjectsUidAlertsUidGet", "responses": { "200": { "description": "OK", "schema": { "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" } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the specified alert of the specified project", "operationId": "v1ProjectsUidAlertsUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified alert of the specified project", "operationId": "v1ProjectsUidAlertsUidDelete", "responses": { "204": { "description": "The resource was deleted successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "type": "string", "name": "component", "in": "path", "required": true }, { "type": "string", "name": "alertUid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/macros": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "List the macros of the specified project", "operationId": "v1ProjectsUidMacrosList", "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 project", "operationId": "v1ProjectsUidMacrosUpdate", "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 project", "operationId": "v1ProjectsUidMacrosCreate", "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 project by macro name", "operationId": "v1ProjectsUidMacrosDeleteByMacroName", "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 project by macro name", "operationId": "v1ProjectsUidMacrosUpdateByMacroName", "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": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/meta": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the metadata of the specified project", "operationId": "v1ProjectsUidMetaUpdate", "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" } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/preferences/clusterSettings": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get project cluster settings", "operationId": "v1ProjectClusterSettingsGet", "responses": { "200": { "description": "(empty)", "schema": { "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 } } } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/preferences/clusterSettings/nodesAutoRemediationSetting": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update project clusters nodes auto remediation setting", "operationId": "v1ProjectClustersNodesAutoRemediationSettingUpdate", "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": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/teams": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the teams association to the specified project", "operationId": "v1ProjectsUidTeamsUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "properties": { "teams": { "type": "array", "uniqueItems": true, "items": { "properties": { "roles": { "type": "array", "items": { "type": "string" } }, "teamId": { "type": "string" } } } } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/users": { "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Update the users association to the specified project", "operationId": "v1ProjectsUidUsersUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "properties": { "users": { "type": "array", "uniqueItems": true, "items": { "properties": { "roles": { "type": "array", "items": { "type": "string" } }, "userId": { "type": "string" } } } } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/projects/{uid}/validate": { "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validate and returns active resource of project before delete", "operationId": "v1ProjectsUidValidate", "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/registries/helm": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Helm registries", "operationId": "v1RegistriesHelmList", "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 registry items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a helm registry", "operationId": "v1RegistriesHelmCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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": [ { "enum": [ "system", "tenant", "all" ], "type": "string", "default": "all", "name": "scope", "in": "query" } ] }, "/v1/registries/helm/summary": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of helm registries as summary", "operationId": "v1RegistriesHelmSummaryList", "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 registry items", "schema": { "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 } } } } } } } }, "parameters": [ { "enum": [ "system", "tenant", "all" ], "type": "string", "default": "all", "name": "scope", "in": "query" } ] }, "/v1/registries/helm/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if helm registry is valid else error.", "tags": [ "v1" ], "summary": "Check if helm registry is valid", "operationId": "V1RegistriesHelmValidate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "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" } } } }, { "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/registries/helm/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Helm registry", "operationId": "v1RegistriesHelmUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified helm registry", "operationId": "v1RegistriesHelmUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 helm registry", "operationId": "v1RegistriesHelmUidDelete", "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/registries/helm/{uid}/sync": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Sync all the helm charts from the registry", "tags": [ "v1" ], "summary": "Sync Helm registry", "operationId": "v1RegistriesHelmUidSync", "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 }, { "type": "boolean", "default": false, "name": "forceSync", "in": "query" } ] }, "/v1/registries/helm/{uid}/sync/status": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Get the sync status for the specified helm registry", "tags": [ "v1" ], "summary": "Get helm registry sync status", "operationId": "v1RegistriesHelmUidSyncStatus", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Helm registry sync status", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/registries/metadata": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of registries metadata", "operationId": "v1RegistriesMetadata", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of registry metadata items", "schema": { "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" } } } } } } } } }, "parameters": [ { "enum": [ "system", "tenant", "all" ], "type": "string", "default": "all", "name": "scope", "in": "query" } ] }, "/v1/registries/oci/basic": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a basic oci registry", "operationId": "v1BasicOciRegistriesCreate", "parameters": [ { "type": "boolean", "default": false, "name": "skipPackSync", "in": "query" }, { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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/registries/oci/basic/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if oci registry is valid else error.", "tags": [ "v1" ], "summary": "Check if oci registry is valid", "operationId": "v1BasicOciRegistriesValidate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "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" } } } }, { "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/registries/oci/ecr": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a ecr registry", "operationId": "v1EcrRegistriesCreate", "parameters": [ { "type": "boolean", "default": false, "name": "skipPackSync", "in": "query" }, { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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/registries/oci/ecr/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if ecr registry is valid else error.", "tags": [ "v1" ], "summary": "Check if ecr registry is valid", "operationId": "v1EcrRegistriesValidate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "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" } } } } } }, { "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/registries/oci/image": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a image registry", "operationId": "v1OciImageRegistryGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "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" } } } } } } }, "/v1/registries/oci/summary": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a oci registries summary", "operationId": "v1OciRegistriesSummary", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "An array of oci registry items", "schema": { "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" } } } } } } } } } } } } } }, "/v1/registries/oci/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the information of specified oci registry", "operationId": "v1OciRegistriesGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true }, { "type": "string", "name": "clusterUid", "in": "query" } ] }, "/v1/registries/oci/{uid}/basic": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the basic oci registry", "operationId": "v1BasicOciRegistriesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified basic oci registry", "operationId": "v1BasicOciRegistriesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } }, { "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 basic oci registry", "operationId": "v1BasicOciRegistriesUidDelete", "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/registries/oci/{uid}/basic/sync": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Sync all the content from the oci registry", "tags": [ "v1" ], "summary": "Sync oci registry", "operationId": "v1BasicOciRegistriesUidSync", "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 }, { "type": "boolean", "default": false, "name": "forceSync", "in": "query" } ] }, "/v1/registries/oci/{uid}/basic/sync/status": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Get sync status for the oci specified registry", "tags": [ "v1" ], "summary": "Get oci registry sync status", "operationId": "v1BasicOciRegistriesUidSyncStatus", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Oci registry sync status", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/registries/oci/{uid}/ecr": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified ecr registry", "operationId": "v1EcrRegistriesUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified ecr registry", "operationId": "v1EcrRegistriesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 ecr registry", "operationId": "v1EcrRegistriesUidDelete", "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/registries/oci/{uid}/ecr/sync": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Sync all the content from the ecr registry", "tags": [ "v1" ], "summary": "Sync ecr registry", "operationId": "v1EcrRegistriesUidSync", "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 }, { "type": "boolean", "default": false, "name": "forceSync", "in": "query" } ] }, "/v1/registries/oci/{uid}/ecr/sync/status": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Get sync status for the ecr specified registry", "tags": [ "v1" ], "summary": "Get ecr registry sync status", "operationId": "v1EcrRegistriesUidSyncStatus", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Ecr registry sync status", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/registries/pack": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of Pack registries", "operationId": "v1RegistriesPackList", "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 registry items", "schema": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a pack registry", "operationId": "v1RegistriesPackCreate", "parameters": [ { "type": "boolean", "default": false, "name": "skipPackSync", "in": "query" }, { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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": [ { "enum": [ "system", "tenant", "all" ], "type": "string", "default": "all", "name": "scope", "in": "query" } ] }, "/v1/registries/pack/summary": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of pack registries as summary", "operationId": "v1RegistriesPackSummaryList", "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 registry items", "schema": { "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 } } } } } } } }, "parameters": [ { "enum": [ "system", "tenant", "all" ], "type": "string", "default": "all", "name": "scope", "in": "query" } ] }, "/v1/registries/pack/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Returns no contents if pack registry is valid else error.", "tags": [ "v1" ], "summary": "Check if pack registry is valid", "operationId": "V1RegistriesPackValidate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "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" } } } }, { "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/registries/pack/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified Pack registry", "operationId": "v1RegistriesPackUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified pack registry", "operationId": "v1RegistriesPackUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } }, { "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 pack registry", "operationId": "v1RegistriesPackUidDelete", "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/registries/pack/{uid}/sync": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Sync all the packs from the registry", "tags": [ "v1" ], "summary": "Sync Pack registry", "operationId": "v1RegistriesPackUidSync", "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 }, { "type": "boolean", "default": false, "name": "forceSync", "in": "query" } ] }, "/v1/registries/pack/{uid}/sync/status": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "Get sync status for the pack specified registry", "tags": [ "v1" ], "summary": "Get pack registry sync status", "operationId": "v1RegistriesPackUidSyncStatus", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Pack registry sync status", "schema": { "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" } } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/registries/{registryName}/config": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified system scope registry configuration", "operationId": "v1RegistriesNameConfigGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } }, "parameters": [ { "type": "string", "name": "registryName", "in": "path", "required": true } ] }, "/v1/registries/{uid}": { "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified registry", "operationId": "v1RegistriesUidDelete", "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/roles": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Retrieves a list of roles", "operationId": "v1RolesList", "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": { "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 } } } } } } } }, "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a role with specified permissions", "operationId": "v1RolesCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } }, { "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/roles/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the specified role", "operationId": "v1RolesUidGet", "responses": { "200": { "description": "OK", "schema": { "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 } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Updates the specified role", "operationId": "v1RolesUidUpdate", "parameters": [ { "name": "body", "in": "body", "schema": { "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 } } } } } } ], "responses": { "204": { "description": "The resource was updated successfully" } } }, "delete": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Deletes the specified role", "operationId": "v1RolesUidDelete", "responses": { "204": { "description": "The resource was deleted successfully" } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/roles/{uid}/clone": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Clone the role", "operationId": "v1RolesClone", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Role clone specifications", "properties": { "metadata": { "description": "Role clone metadata", "properties": { "name": { "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" } } } } }, "parameters": [ { "type": "string", "name": "uid", "in": "path", "required": true } ] }, "/v1/services/{serviceName}/version": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns a latest version for a given service name", "operationId": "v1ServiceVersionGet", "parameters": [ { "enum": [ "ally", "jet", "palette", "ambit", "ally-lite", "palette-lite", "crony", "tick", "edge", "lodge", "level", "edgeconfig", "firth", "stylus" ], "type": "string", "description": "service name", "name": "serviceName", "in": "path", "required": true }, { "type": "string", "description": "spectro cluster uid", "name": "clusterUid", "in": "query" }, { "type": "string", "description": "edge host uid", "name": "edgeHostUid", "in": "query" }, { "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": { "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" } } } } } } } } }, "/v1/services/{serviceName}/versions/{version}/manifest": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns a service manifest for a given service name and version", "operationId": "v1ServiceManifestGet", "parameters": [ { "enum": [ "ally", "jet", "palette", "ambit", "ally-lite", "palette-lite", "crony", "tick", "edge", "lodge", "level", "edgeconfig", "firth", "stylus" ], "type": "string", "description": "service name", "name": "serviceName", "in": "path", "required": true }, { "type": "string", "description": "service version", "name": "version", "in": "path", "required": true }, { "enum": [ "apply", "delete", "resources" ], "type": "string", "description": "action type", "name": "action", "in": "query", "required": true }, { "type": "string", "description": "resource file name", "name": "resourceFilename", "in": "query" }, { "type": "string", "description": "spectro cluster uid", "name": "clusterUid", "in": "query" }, { "type": "string", "description": "edge host uid", "name": "edgeHostUid", "in": "query" }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } }, "/v1/spectroclusters/aks": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an AKS cluster", "operationId": "v1SpectroClustersAksCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/aks/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get AKS cluster estimated rate information", "operationId": "v1SpectroClustersAksRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Aks 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/aks/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates AKS cluster create operation", "operationId": "v1SpectroClustersAksValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Aks 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/aws": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an AWS cluster", "operationId": "v1SpectroClustersAwsCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/aws/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports an AWS cluster", "operationId": "v1SpectroClustersAwsImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } }, { "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/aws/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get AWS cluster estimated rate information", "operationId": "v1SpectroClustersAwsRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Aws 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/aws/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates AWS cluster create operation", "operationId": "v1SpectroClustersAwsValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Aws 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/azure": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an Azure cluster", "operationId": "v1SpectroClustersAzureCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/azure/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports an Azure cluster", "operationId": "v1SpectroClustersAzureImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } }, { "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/azure/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get Azure cluster estimated rate information", "operationId": "v1SpectroClustersAzureRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Azure 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/azure/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates Azure cluster create operation", "operationId": "v1SpectroClustersAzureValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Azure 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/cloudTypes/{cloudType}": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a Custom cluster", "operationId": "v1SpectroClustersCustomCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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's cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/spectroclusters/cloudTypes/{cloudType}/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates Custom cluster create operation", "operationId": "v1SpectroClustersCustomValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Custom 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" } } } } } } } } }, "parameters": [ { "type": "string", "description": "Cluster's cloud type", "name": "cloudType", "in": "path", "required": true } ] }, "/v1/spectroclusters/config/edgeInstaller": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Cluster configuration for the edge installer", "operationId": "v1SpectroClustersConfigEdgeInstaller", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "(empty)", "schema": { "properties": { "installerDownloadLinks": { "additionalProperties": { "type": "string" } } } } } } } }, "/v1/spectroclusters/edge-native": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an EdgeNative cluster", "operationId": "v1SpectroClustersEdgeNativeCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/edge-native/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports an EdgeNative cluster", "operationId": "v1SpectroClustersEdgeNativeImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } }, { "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/edge-native/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get edge-native cluster estimated rate information", "operationId": "v1SpectroClustersEdgeNativeRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "EdgeNative 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/edge-native/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates edge-native cluster create operation", "operationId": "v1SpectroClustersEdgeNativeValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "EdgeNative 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/eks": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an EKS cluster", "operationId": "v1SpectroClustersEksCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/eks/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get EKS cluster estimated rate information", "operationId": "v1SpectroClustersEksRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Eks 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/eks/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates EKS cluster create operation", "operationId": "v1SpectroClustersEksValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Eks 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/features/backup/locations/{uid}": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Returns the cluster object references based on locationUid", "operationId": "V1ClusterFeatureBackupLocationUidGet", "parameters": [ { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "OK", "schema": { "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" } } } } } } } } }, "put": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Change cluster backup location", "operationId": "V1ClusterFeatureBackupLocationUidChange", "parameters": [ { "name": "body", "in": "body", "schema": { "description": "Cluster backup location type", "required": [ "locationType" ], "properties": { "locationType": { "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/features/logFetcher/{uid}/download": { "get": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Download log fetcher logs for cluster by log fetcher uid", "operationId": "v1ClusterFeatureLogFetcherLogDownload", "parameters": [ { "type": "string", "name": "fileName", "in": "query" }, { "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", "description": "Cluster uid for which log is requested", "name": "uid", "in": "path", "required": true } ] }, "/v1/spectroclusters/features/logFetcher/{uid}/log": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "consumes": [ "multipart/form-data" ], "tags": [ "v1" ], "summary": "Update log fetcher logs by log fetcher uid", "operationId": "v1ClusterFeatureLogFetcherLogUpdate", "parameters": [ { "type": "file", "description": "Log file by agent", "name": "fileName", "in": "formData" }, { "type": "string", "description": "Unique request Id", "name": "requestId", "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" } } } } }, "parameters": [ { "type": "string", "description": "Cluster uid for which log is requested", "name": "uid", "in": "path", "required": true } ] }, "/v1/spectroclusters/gcp": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a GCP cluster", "operationId": "v1SpectroClustersGcpCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/gcp/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports a GCP cluster", "operationId": "v1SpectroClustersGcpImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } }, { "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/gcp/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get GCP cluster estimated rate information", "operationId": "v1SpectroClustersGcpRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Gcp 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/gcp/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates GCP cluster create operation", "operationId": "v1SpectroClustersGcpValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Gcp 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/generic/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "description": "The machines information will be captured, whereas the cloud specific configuration info will not be retrieved", "tags": [ "v1" ], "summary": "Imports a cluster of any cloud type in generic way", "operationId": "v1SpectroClustersGenericImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } }, { "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/generic/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get generic cluster estimated rate information", "operationId": "v1SpectroClustersGenericRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Genric 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/gke": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates an GKE cluster", "operationId": "v1SpectroClustersGkeCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/gke/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get GKE cluster estimated rate information", "operationId": "v1SpectroClustersGkeRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Gke 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/gke/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates GKE cluster create operation", "operationId": "v1SpectroClustersGkeValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Gke 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/maas": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a MAAS cluster", "operationId": "v1SpectroClustersMaasCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/maas/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports a Maas cluster", "operationId": "v1SpectroClustersMaasImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } }, { "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/maas/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get maas cluster estimated rate information", "operationId": "v1SpectroClustersMaasRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Maas 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/maas/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates MAAS cluster create operation", "operationId": "v1SpectroClustersMaasValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Maas 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/openstack": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a OpenStack cluster", "operationId": "v1SpectroClustersOpenStackCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/openstack/import": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Imports an OpenStack cluster", "operationId": "v1SpectroClustersOpenStackImport", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } }, { "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/openstack/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get openstack cluster estimated rate information", "operationId": "v1SpectroClustersOpenStackRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Openstack 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/openstack/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates OpenStack cluster create operation", "operationId": "v1SpectroClustersOpenStackValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/spc/download": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "v1" ], "summary": "Downloads the cluster definition archive file", "operationId": "v1SpectroClustersSpcDownload", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Cluster definition archive file", "schema": { "type": "string", "format": "binary" }, "headers": { "Content-Disposition": { "type": "string" } } } } } }, "/v1/spectroclusters/tke": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Creates a Tke cluster", "operationId": "v1SpectroClustersTkeCreate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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/tke/rate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Get TKE cluster estimated rate information", "operationId": "v1SpectroClustersTkeRate", "parameters": [ { "enum": [ "hourly", "monthly", "yearly" ], "type": "string", "default": "hourly", "name": "periodType", "in": "query" }, { "name": "body", "in": "body", "schema": { "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 } } } } } } } } }, { "type": "string", "description": "Scope the request to the specified project uid", "name": "ProjectUid", "in": "header" } ], "responses": { "200": { "description": "Tke 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/tke/validate": { "post": { "security": [ { "ApiKey": [] }, { "Authorization": [] } ], "tags": [ "v1" ], "summary": "Validates TKE cluster create operation", "operationId": "v1SpectroClustersTkeValidate", "parameters": [ { "name": "body", "in": "body", "schema": { "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" } } } } } } } } } } } }, { "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" } } }