diff --git a/data/data/cluster-api/vsphere-infrastructure-components.yaml b/data/data/cluster-api/vsphere-infrastructure-components.yaml index e9d088d7b4..c65da0181a 100644 --- a/data/data/cluster-api/vsphere-infrastructure-components.yaml +++ b/data/data/cluster-api/vsphere-infrastructure-components.yaml @@ -9,7 +9,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -18,449 +18,447 @@ spec: group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereClusterIdentity listKind: VSphereClusterIdentityList plural: vsphereclusteridentities singular: vsphereclusteridentity scope: Cluster versions: - - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereClusterIdentity defines the account to be used for reconciling clusters - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - properties: - allowedNamespaces: - description: |- - AllowedNamespaces is used to identify which namespaces are allowed to use this account. - Namespaces can be selected with a label selector. - If this object is nil, no namespaces will be allowed - properties: - selector: - description: Selector is a standard Kubernetes LabelSelector. - A label query over a set of resources. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - type: object - secretName: - description: SecretName references a Secret inside the controller - namespace with the credentials to use - minLength: 1 - type: string - type: object - status: - properties: - conditions: - description: Conditions defines current service state of the VSphereCluster. - items: - description: Condition defines an observation of a Cluster API resource - operational state. + - deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereClusterIdentity defines the account to be used for reconciling clusters + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + properties: + allowedNamespaces: + description: |- + AllowedNamespaces is used to identify which namespaces are allowed to use this account. + Namespaces can be selected with a label selector. + If this object is nil, no namespaces will be allowed properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - ready: - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereClusterIdentity defines the account to be used for reconciling clusters - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - properties: - allowedNamespaces: - description: |- - AllowedNamespaces is used to identify which namespaces are allowed to use this account. - Namespaces can be selected with a label selector. - If this object is nil, no namespaces will be allowed - properties: - selector: - description: Selector is a standard Kubernetes LabelSelector. - A label query over a set of resources. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: + selector: + description: Selector is a standard Kubernetes LabelSelector. + A label query over a set of resources. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - type: object - secretName: - description: SecretName references a Secret inside the controller - namespace with the credentials to use - minLength: 1 - type: string - type: object - status: - properties: - conditions: - description: Conditions defines current service state of the VSphereCluster. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - ready: - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereClusterIdentity defines the account to be used for reconciling - clusters. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereClusterIdentitySpec contains a secret reference and - a group of allowed namespaces. - properties: - allowedNamespaces: - description: |- - AllowedNamespaces is used to identify which namespaces are allowed to use this account. - Namespaces can be selected with a label selector. - If this object is nil, no namespaces will be allowed - properties: - selector: - description: Selector is a standard Kubernetes LabelSelector. - A label query over a set of resources. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - type: object - secretName: - description: SecretName references a Secret inside the controller - namespace with the credentials to use - minLength: 1 - type: string - type: object - status: - description: VSphereClusterIdentityStatus contains the status of the VSphereClusterIdentity. - properties: - conditions: - description: Conditions defines current service state of the VSphereCluster. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - lastTransitionTime - - status - - type + type: object + x-kubernetes-map-type: atomic type: object - type: array - ready: - type: boolean - type: object - type: object - served: true - storage: true - subresources: - status: {} + secretName: + description: SecretName references a Secret inside the controller + namespace with the credentials to use + minLength: 1 + type: string + type: object + status: + properties: + conditions: + description: Conditions defines current service state of the VSphereCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + ready: + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereClusterIdentity defines the account to be used for reconciling clusters + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + properties: + allowedNamespaces: + description: |- + AllowedNamespaces is used to identify which namespaces are allowed to use this account. + Namespaces can be selected with a label selector. + If this object is nil, no namespaces will be allowed + properties: + selector: + description: Selector is a standard Kubernetes LabelSelector. + A label query over a set of resources. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + secretName: + description: SecretName references a Secret inside the controller + namespace with the credentials to use + minLength: 1 + type: string + type: object + status: + properties: + conditions: + description: Conditions defines current service state of the VSphereCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + ready: + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereClusterIdentity defines the account to be used for reconciling + clusters. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereClusterIdentitySpec contains a secret reference and + a group of allowed namespaces. + properties: + allowedNamespaces: + description: |- + AllowedNamespaces is used to identify which namespaces are allowed to use this account. + Namespaces can be selected with a label selector. + If this object is nil, no namespaces will be allowed + properties: + selector: + description: Selector is a standard Kubernetes LabelSelector. + A label query over a set of resources. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + secretName: + description: SecretName references a Secret inside the controller + namespace with the credentials to use + minLength: 1 + type: string + type: object + status: + description: VSphereClusterIdentityStatus contains the status of the VSphereClusterIdentity. + properties: + conditions: + description: Conditions defines current service state of the VSphereCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - lastTransitionTime + - status + - type + type: object + type: array + ready: + type: boolean + type: object + type: object + served: true + storage: true + subresources: + status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -475,218 +473,104 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereCluster listKind: VSphereClusterList plural: vsphereclusters singular: vspherecluster scope: Namespaced versions: - - additionalPrinterColumns: - - description: Cluster infrastructure is ready for VSphereMachine - jsonPath: .status.ready - name: Ready - type: string - - description: Server is the address of the vSphere endpoint - jsonPath: .spec.server - name: Server - type: string - - description: API Endpoint - jsonPath: .spec.controlPlaneEndpoint[0] - name: ControlPlaneEndpoint - priority: 1 - type: string - - description: Time duration since creation of Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereCluster is the Schema for the vsphereclusters API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereClusterSpec defines the desired state of VSphereCluster. - properties: - cloudProviderConfiguration: - description: |- - CloudProviderConfiguration holds the cluster-wide configuration for the vSphere cloud provider. - - - Deprecated: will be removed in v1alpha4. - properties: - disk: - description: Disk is the vSphere cloud provider's disk configuration. - properties: - scsiControllerType: - description: SCSIControllerType defines SCSI controller to - be used. - type: string - type: object - global: - description: Global is the vSphere cloud provider's global configuration. - properties: - apiBindPort: - description: |- - APIBindPort configures the vSphere cloud controller manager API port. - Defaults to 43001. - type: string - apiDisable: - description: |- - APIDisable disables the vSphere cloud controller manager API. - Defaults to true. - type: boolean - caFile: - description: |- - CAFile Specifies the path to a CA certificate in PEM format. - If not configured, the system's CA certificates will be used. - type: string - datacenters: - description: Datacenters is a CSV string of the datacenters - in which VMs are located. - type: string - insecure: - description: Insecure is a flag that disables TLS peer verification. - type: boolean - password: - description: Password is the password used to access a vSphere - endpoint. - type: string - port: - description: |- - Port is the port on which the vSphere endpoint is listening. - Defaults to 443. - type: string - roundTripperCount: - description: |- - RoundTripperCount specifies the SOAP round tripper count - (retries = RoundTripper - 1) - format: int32 - type: integer - secretName: - description: |- - SecretName is the name of the Kubernetes secret in which the vSphere - credentials are located. - type: string - secretNamespace: - description: SecretNamespace is the namespace for SecretName. - type: string - secretsDirectory: - description: |- - SecretsDirectory is a directory in which secrets may be found. This - may used in the event that: - 1. It is not desirable to use the K8s API to watch changes to secrets - 2. The cloud controller manager is not running in a K8s environment, - such as DC/OS. For example, the container storage interface (CSI) is - container orcehstrator (CO) agnostic, and should support non-K8s COs. - Defaults to /etc/cloud/credentials. - type: string - serviceAccount: - description: |- - ServiceAccount is the Kubernetes service account used to launch the cloud - controller manager. - Defaults to cloud-controller-manager. - type: string - thumbprint: - description: |- - Thumbprint is the cryptographic thumbprint of the vSphere endpoint's - certificate. - type: string - username: - description: Username is the username used to access a vSphere - endpoint. - type: string - type: object - labels: - description: Labels is the vSphere cloud provider's zone and region - configuration. - properties: - region: - description: Region is the region in which VMs are created/located. - type: string - zone: - description: Zone is the zone in which VMs are created/located. - type: string - type: object - network: - description: Network is the vSphere cloud provider's network configuration. - properties: - name: - description: Name is the name of the network to which VMs - are connected. - type: string - type: object - providerConfig: - description: |- - CPIProviderConfig contains extra information used to configure the - vSphere cloud provider. - properties: - cloud: - properties: - controllerImage: - type: string - extraArgs: - additionalProperties: - type: string - description: |- - ExtraArgs passes through extra arguments to the cloud provider. - The arguments here are passed to the cloud provider daemonset specification - type: object - type: object - storage: - properties: - attacherImage: - type: string - controllerImage: - type: string - livenessProbeImage: - type: string - metadataSyncerImage: - type: string - nodeDriverImage: - type: string - provisionerImage: - type: string - registrarImage: - type: string - type: object - type: object - virtualCenter: - additionalProperties: - description: CPIVCenterConfig is a vSphere cloud provider's - vCenter configuration. + - additionalPrinterColumns: + - description: Cluster infrastructure is ready for VSphereMachine + jsonPath: .status.ready + name: Ready + type: string + - description: Server is the address of the vSphere endpoint + jsonPath: .spec.server + name: Server + type: string + - description: API Endpoint + jsonPath: .spec.controlPlaneEndpoint[0] + name: ControlPlaneEndpoint + priority: 1 + type: string + - description: Time duration since creation of Machine + jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereCluster is the Schema for the vsphereclusters API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereClusterSpec defines the desired state of VSphereCluster. + properties: + cloudProviderConfiguration: + description: |- + CloudProviderConfiguration holds the cluster-wide configuration for the vSphere cloud provider. + + Deprecated: will be removed in v1alpha4. + properties: + disk: + description: Disk is the vSphere cloud provider's disk configuration. properties: + scsiControllerType: + description: SCSIControllerType defines SCSI controller to + be used. + type: string + type: object + global: + description: Global is the vSphere cloud provider's global configuration. + properties: + apiBindPort: + description: |- + APIBindPort configures the vSphere cloud controller manager API port. + Defaults to 43001. + type: string + apiDisable: + description: |- + APIDisable disables the vSphere cloud controller manager API. + Defaults to true. + type: boolean + caFile: + description: |- + CAFile Specifies the path to a CA certificate in PEM format. + If not configured, the system's CA certificates will be used. + type: string datacenters: description: Datacenters is a CSV string of the datacenters in which VMs are located. type: string + insecure: + description: Insecure is a flag that disables TLS peer verification. + type: boolean password: description: Password is the password used to access a vSphere endpoint. @@ -702,6 +586,30 @@ spec: (retries = RoundTripper - 1) format: int32 type: integer + secretName: + description: |- + SecretName is the name of the Kubernetes secret in which the vSphere + credentials are located. + type: string + secretNamespace: + description: SecretNamespace is the namespace for SecretName. + type: string + secretsDirectory: + description: |- + SecretsDirectory is a directory in which secrets may be found. This + may used in the event that: + 1. It is not desirable to use the K8s API to watch changes to secrets + 2. The cloud controller manager is not running in a K8s environment, + such as DC/OS. For example, the container storage interface (CSI) is + container orcehstrator (CO) agnostic, and should support non-K8s COs. + Defaults to /etc/cloud/credentials. + type: string + serviceAccount: + description: |- + ServiceAccount is the Kubernetes service account used to launch the cloud + controller manager. + Defaults to cloud-controller-manager. + type: string thumbprint: description: |- Thumbprint is the cryptographic thumbprint of the vSphere endpoint's @@ -712,631 +620,715 @@ spec: endpoint. type: string type: object - description: VCenter is a list of vCenter configurations. - type: object - workspace: - description: Workspace is the vSphere cloud provider's workspace - configuration. - properties: - datacenter: - description: Datacenter is the datacenter in which VMs are - 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 - resourcePool: - description: ResourcePool is the resource pool in which VMs - are created/located. - type: string - server: - description: Server is the IP address or FQDN of the vSphere - endpoint. - type: string - type: object - type: object - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint used to - communicate with the control plane. - 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. - format: int32 - type: integer - required: - - host - - port - type: object - identityRef: - description: |- - IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains - the identity to use when reconciling the cluster. - properties: - kind: - description: Kind of the identity. Can either be VSphereClusterIdentity - or Secret - enum: - - VSphereClusterIdentity - - Secret - type: string - name: - description: Name of the identity. - minLength: 1 - type: string - required: - - kind - - name - type: object - insecure: - description: |- - Insecure is a flag that controls whether to validate the - vSphere server's certificate. - - - Deprecated: will be removed in v1alpha4. - type: boolean - loadBalancerRef: - description: |- - LoadBalancerRef may be used to enable a control plane load balancer - for this cluster. - When a LoadBalancerRef is provided, the VSphereCluster.Status.Ready field - will not be true until the referenced resource is Status.Ready and has a - non-empty Status.Address value. - - - Deprecated: will be removed in v1alpha4. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - TODO: this design is not final and this field is subject to change in the future. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string - type: object - x-kubernetes-map-type: atomic - server: - description: Server is the address of the vSphere endpoint. - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When provided, Insecure should not be set to true - type: string - type: object - status: - description: VSphereClusterStatus defines the observed state of VSphereClusterSpec. - properties: - conditions: - description: Conditions defines current service state of the VSphereCluster. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - failureDomains: - additionalProperties: - description: |- - FailureDomainSpec is the Schema for Cluster API failure domains. - It allows controllers to understand how many failure domains a cluster can optionally span across. - properties: - attributes: - additionalProperties: - type: string - description: Attributes is a free form map of attributes an - infrastructure provider might use or require. - type: object - controlPlane: - description: ControlPlane determines if this failure domain - is suitable for use by control plane machines. - type: boolean - type: object - description: FailureDomains is a list of failure domain objects synced - from the infrastructure provider. - type: object - ready: - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: Cluster infrastructure is ready for VSphereMachine - jsonPath: .status.ready - name: Ready - type: string - - description: Server is the address of the vSphere endpoint - jsonPath: .spec.server - name: Server - type: string - - description: API Endpoint - jsonPath: .spec.controlPlaneEndpoint[0] - name: ControlPlaneEndpoint - priority: 1 - type: string - - description: Time duration since creation of Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereCluster is the Schema for the vsphereclusters API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereClusterSpec defines the desired state of VSphereCluster - properties: - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint used to - communicate with the control plane. - 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. - format: int32 - type: integer - required: - - host - - port - type: object - identityRef: - description: |- - IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains - the identity to use when reconciling the cluster. - properties: - kind: - description: Kind of the identity. Can either be VSphereClusterIdentity - or Secret - enum: - - VSphereClusterIdentity - - Secret - type: string - name: - description: Name of the identity. - minLength: 1 - type: string - required: - - kind - - name - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - thumbprint: - description: Thumbprint is the colon-separated SHA-1 checksum of the - given vCenter server's host certificate - type: string - type: object - status: - description: VSphereClusterStatus defines the observed state of VSphereClusterSpec - properties: - conditions: - description: Conditions defines current service state of the VSphereCluster. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - failureDomains: - additionalProperties: - description: |- - FailureDomainSpec is the Schema for Cluster API failure domains. - It allows controllers to understand how many failure domains a cluster can optionally span across. - properties: - attributes: - additionalProperties: - type: string - description: Attributes is a free form map of attributes an - infrastructure provider might use or require. - type: object - controlPlane: - description: ControlPlane determines if this failure domain - is suitable for use by control plane machines. - type: boolean - type: object - description: FailureDomains is a list of failure domain objects synced - from the infrastructure provider. - type: object - ready: - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: Cluster infrastructure is ready for VSphereMachine - jsonPath: .status.ready - name: Ready - type: string - - description: Server is the address of the vSphere endpoint. - jsonPath: .spec.server - name: Server - type: string - - description: API Endpoint - jsonPath: .spec.controlPlaneEndpoint[0] - name: ControlPlaneEndpoint - priority: 1 - type: string - - description: Time duration since creation of Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereCluster is the Schema for the vsphereclusters API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereClusterSpec defines the desired state of VSphereCluster. - properties: - clusterModules: - description: |- - ClusterModules hosts information regarding the anti-affinity vSphere constructs - for each of the objects responsible for creation of VM objects belonging to the cluster. - items: - description: |- - ClusterModule holds the anti affinity construct `ClusterModule` identifier - in use by the VMs owned by the object referred by the TargetObjectName field. - properties: - controlPlane: - description: |- - ControlPlane indicates whether the referred object is responsible for control plane nodes. - Currently, only the KubeadmControlPlane objects have this flag set to true. - Only a single object in the slice can have this value set to true. - type: boolean - moduleUUID: - description: ModuleUUID is the unique identifier of the `ClusterModule` - used by the object. - type: string - targetObjectName: - description: |- - TargetObjectName points to the object that uses the Cluster Module information to enforce - anti-affinity amongst its descendant VM objects. - type: string - required: - - controlPlane - - moduleUUID - - targetObjectName - type: object - type: array - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint used to - communicate with the control plane. - 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. - format: int32 - type: integer - required: - - host - - port - type: object - failureDomainSelector: - description: |- - FailureDomainSelector is the label selector to use for failure domain selection - for the control plane nodes of the cluster. - If not set (`nil`), selecting failure domains will be disabled. - An empty value (`{}`) selects all existing failure domains. - A valid selector will select all failure domains which match the selector. - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + labels: + description: Labels is the vSphere cloud provider's zone and region + configuration. properties: - key: - description: key is the label key that the selector applies - to. + region: + description: Region is the region in which VMs are created/located. type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. + zone: + description: Zone is the zone in which VMs are created/located. type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - identityRef: - description: |- - IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains - the identity to use when reconciling the cluster. - properties: - kind: - description: Kind of the identity. Can either be VSphereClusterIdentity - or Secret - enum: - - VSphereClusterIdentity - - Secret - type: string - name: - description: Name of the identity. - minLength: 1 - type: string - required: - - kind - - name - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - thumbprint: - description: Thumbprint is the colon-separated SHA-1 checksum of the - given vCenter server's host certificate - type: string - type: object - status: - description: VSphereClusterStatus defines the observed state of VSphereClusterSpec. - properties: - conditions: - description: Conditions defines current service state of the VSphereCluster. - items: - description: Condition defines an observation of a Cluster API resource - operational state. + network: + description: Network is the vSphere cloud provider's network configuration. + properties: + name: + description: Name is the name of the network to which VMs + are connected. + type: string + type: object + providerConfig: + description: |- + CPIProviderConfig contains extra information used to configure the + vSphere cloud provider. + properties: + cloud: + properties: + controllerImage: + type: string + extraArgs: + additionalProperties: + type: string + description: |- + ExtraArgs passes through extra arguments to the cloud provider. + The arguments here are passed to the cloud provider daemonset specification + type: object + type: object + storage: + properties: + attacherImage: + type: string + controllerImage: + type: string + livenessProbeImage: + type: string + metadataSyncerImage: + type: string + nodeDriverImage: + type: string + provisionerImage: + type: string + registrarImage: + type: string + type: object + type: object + virtualCenter: + additionalProperties: + description: CPIVCenterConfig is a vSphere cloud provider's + vCenter configuration. + properties: + datacenters: + description: Datacenters is a CSV string of the datacenters + in which VMs are located. + type: string + password: + description: Password is the password used to access a vSphere + endpoint. + type: string + port: + description: |- + Port is the port on which the vSphere endpoint is listening. + Defaults to 443. + type: string + roundTripperCount: + description: |- + RoundTripperCount specifies the SOAP round tripper count + (retries = RoundTripper - 1) + format: int32 + type: integer + thumbprint: + description: |- + Thumbprint is the cryptographic thumbprint of the vSphere endpoint's + certificate. + type: string + username: + description: Username is the username used to access a vSphere + endpoint. + type: string + type: object + description: VCenter is a list of vCenter configurations. + type: object + workspace: + description: Workspace is the vSphere cloud provider's workspace + configuration. + properties: + datacenter: + description: Datacenter is the datacenter in which VMs are + 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 + resourcePool: + description: ResourcePool is the resource pool in which VMs + are created/located. + type: string + server: + description: Server is the IP address or FQDN of the vSphere + endpoint. + type: string + type: object + type: object + controlPlaneEndpoint: + description: ControlPlaneEndpoint represents the endpoint used to + communicate with the control plane. properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time + host: + description: The hostname on which the API server is serving. type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. + port: + description: The port on which the API server is serving. + format: int32 + type: integer + required: + - host + - port + type: object + identityRef: + description: |- + IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains + the identity to use when reconciling the cluster. + properties: + kind: + description: Kind of the identity. Can either be VSphereClusterIdentity + or Secret + enum: + - VSphereClusterIdentity + - Secret type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. + name: + description: Name of the identity. + minLength: 1 type: string required: - - lastTransitionTime - - status - - type + - kind + - name type: object - type: array - failureDomains: - additionalProperties: + insecure: description: |- - FailureDomainSpec is the Schema for Cluster API failure domains. - It allows controllers to understand how many failure domains a cluster can optionally span across. + Insecure is a flag that controls whether to validate the + vSphere server's certificate. + + Deprecated: will be removed in v1alpha4. + type: boolean + loadBalancerRef: + description: |- + LoadBalancerRef may be used to enable a control plane load balancer + for this cluster. + When a LoadBalancerRef is provided, the VSphereCluster.Status.Ready field + will not be true until the referenced resource is Status.Ready and has a + non-empty Status.Address value. + + Deprecated: will be removed in v1alpha4. properties: - attributes: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: + description: |- + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string + type: object + x-kubernetes-map-type: atomic + server: + description: Server is the address of the vSphere endpoint. + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When provided, Insecure should not be set to true + type: string + type: object + status: + description: VSphereClusterStatus defines the observed state of VSphereClusterSpec. + properties: + conditions: + description: Conditions defines current service state of the VSphereCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + failureDomains: + additionalProperties: + description: |- + FailureDomainSpec is the Schema for Cluster API failure domains. + It allows controllers to understand how many failure domains a cluster can optionally span across. + properties: + attributes: + additionalProperties: + type: string + description: Attributes is a free form map of attributes an + infrastructure provider might use or require. + type: object + controlPlane: + description: ControlPlane determines if this failure domain + is suitable for use by control plane machines. + type: boolean + type: object + description: FailureDomains is a list of failure domain objects synced + from the infrastructure provider. + type: object + ready: + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Cluster infrastructure is ready for VSphereMachine + jsonPath: .status.ready + name: Ready + type: string + - description: Server is the address of the vSphere endpoint + jsonPath: .spec.server + name: Server + type: string + - description: API Endpoint + jsonPath: .spec.controlPlaneEndpoint[0] + name: ControlPlaneEndpoint + priority: 1 + type: string + - description: Time duration since creation of Machine + jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereCluster is the Schema for the vsphereclusters API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereClusterSpec defines the desired state of VSphereCluster + properties: + controlPlaneEndpoint: + description: ControlPlaneEndpoint represents the endpoint used to + communicate with the control plane. + 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. + format: int32 + type: integer + required: + - host + - port + type: object + identityRef: + description: |- + IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains + the identity to use when reconciling the cluster. + properties: + kind: + description: Kind of the identity. Can either be VSphereClusterIdentity + or Secret + enum: + - VSphereClusterIdentity + - Secret + type: string + name: + description: Name of the identity. + minLength: 1 + type: string + required: + - kind + - name + type: object + server: + description: Server is the address of the vSphere endpoint. + type: string + thumbprint: + description: Thumbprint is the colon-separated SHA-1 checksum of the + given vCenter server's host certificate + type: string + type: object + status: + description: VSphereClusterStatus defines the observed state of VSphereClusterSpec + properties: + conditions: + description: Conditions defines current service state of the VSphereCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + failureDomains: + additionalProperties: + description: |- + FailureDomainSpec is the Schema for Cluster API failure domains. + It allows controllers to understand how many failure domains a cluster can optionally span across. + properties: + attributes: + additionalProperties: + type: string + description: Attributes is a free form map of attributes an + infrastructure provider might use or require. + type: object + controlPlane: + description: ControlPlane determines if this failure domain + is suitable for use by control plane machines. + type: boolean + type: object + description: FailureDomains is a list of failure domain objects synced + from the infrastructure provider. + type: object + ready: + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Cluster infrastructure is ready for VSphereMachine + jsonPath: .status.ready + name: Ready + type: string + - description: Server is the address of the vSphere endpoint. + jsonPath: .spec.server + name: Server + type: string + - description: API Endpoint + jsonPath: .spec.controlPlaneEndpoint[0] + name: ControlPlaneEndpoint + priority: 1 + type: string + - description: Time duration since creation of Machine + jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereCluster is the Schema for the vsphereclusters API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereClusterSpec defines the desired state of VSphereCluster. + properties: + clusterModules: + description: |- + ClusterModules hosts information regarding the anti-affinity vSphere constructs + for each of the objects responsible for creation of VM objects belonging to the cluster. + items: + description: |- + ClusterModule holds the anti affinity construct `ClusterModule` identifier + in use by the VMs owned by the object referred by the TargetObjectName field. + properties: + controlPlane: + description: |- + ControlPlane indicates whether the referred object is responsible for control plane nodes. + Currently, only the KubeadmControlPlane objects have this flag set to true. + Only a single object in the slice can have this value set to true. + type: boolean + moduleUUID: + description: ModuleUUID is the unique identifier of the `ClusterModule` + used by the object. + type: string + targetObjectName: + description: |- + TargetObjectName points to the object that uses the Cluster Module information to enforce + anti-affinity amongst its descendant VM objects. + type: string + required: + - controlPlane + - moduleUUID + - targetObjectName + type: object + type: array + controlPlaneEndpoint: + description: ControlPlaneEndpoint represents the endpoint used to + communicate with the control plane. + 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. + format: int32 + type: integer + required: + - host + - port + type: object + failureDomainSelector: + description: |- + FailureDomainSelector is the label selector to use for failure domain selection + for the control plane nodes of the cluster. + If not set (`nil`), selecting failure domains will be disabled. + An empty value (`{}`) selects all existing failure domains. + A valid selector will select all failure domains which match the selector. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: additionalProperties: type: string - description: Attributes is a free form map of attributes an - infrastructure provider might use or require. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object - controlPlane: - description: ControlPlane determines if this failure domain - is suitable for use by control plane machines. - type: boolean type: object - description: FailureDomains is a list of failure domain objects synced - from the infrastructure provider. - type: object - ready: - type: boolean - vCenterVersion: - description: VCenterVersion defines the version of the vCenter server - defined in the spec. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} + x-kubernetes-map-type: atomic + identityRef: + description: |- + IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains + the identity to use when reconciling the cluster. + properties: + kind: + description: Kind of the identity. Can either be VSphereClusterIdentity + or Secret + enum: + - VSphereClusterIdentity + - Secret + type: string + name: + description: Name of the identity. + minLength: 1 + type: string + required: + - kind + - name + type: object + server: + description: Server is the address of the vSphere endpoint. + type: string + thumbprint: + description: Thumbprint is the colon-separated SHA-1 checksum of the + given vCenter server's host certificate + type: string + type: object + status: + description: VSphereClusterStatus defines the observed state of VSphereClusterSpec. + properties: + conditions: + description: Conditions defines current service state of the VSphereCluster. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - lastTransitionTime + - status + - type + type: object + type: array + failureDomains: + additionalProperties: + description: |- + FailureDomainSpec is the Schema for Cluster API failure domains. + It allows controllers to understand how many failure domains a cluster can optionally span across. + properties: + attributes: + additionalProperties: + type: string + description: Attributes is a free form map of attributes an + infrastructure provider might use or require. + type: object + controlPlane: + description: ControlPlane determines if this failure domain + is suitable for use by control plane machines. + type: boolean + type: object + description: FailureDomains is a list of failure domain objects synced + from the infrastructure provider. + type: object + ready: + type: boolean + vCenterVersion: + description: VCenterVersion defines the version of the vCenter server + defined in the spec. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -1351,278 +1343,277 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereClusterTemplate listKind: VSphereClusterTemplateList plural: vsphereclustertemplates singular: vsphereclustertemplate scope: Namespaced versions: - - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereClusterTemplate is the Schema for the vsphereclustertemplates API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereClusterTemplateSpec defines the desired state of VSphereClusterTemplate - properties: - template: - properties: - spec: - description: VSphereClusterSpec defines the desired state of VSphereCluster - properties: - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint - used to communicate with the control plane. - 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. - format: int32 - type: integer - required: - - host - - port - type: object - identityRef: - description: |- - IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains - the identity to use when reconciling the cluster. - properties: - kind: - description: Kind of the identity. Can either be VSphereClusterIdentity - or Secret - enum: - - VSphereClusterIdentity - - Secret - type: string - name: - description: Name of the identity. - minLength: 1 - type: string - required: - - kind - - name - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - thumbprint: - description: Thumbprint is the colon-separated SHA-1 checksum - of the given vCenter server's host certificate - type: string - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: false - storage: false - - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereClusterTemplate is the Schema for the vsphereclustertemplates - API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereClusterTemplateSpec defines the desired state of VSphereClusterTemplate. - properties: - template: - description: VSphereClusterTemplateResource describes the data for - creating a VSphereCluster from a template. - properties: - spec: - description: VSphereClusterSpec defines the desired state of VSphereCluster. - properties: - clusterModules: - description: |- - ClusterModules hosts information regarding the anti-affinity vSphere constructs - for each of the objects responsible for creation of VM objects belonging to the cluster. - items: - description: |- - ClusterModule holds the anti affinity construct `ClusterModule` identifier - in use by the VMs owned by the object referred by the TargetObjectName field. + - deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereClusterTemplate is the Schema for the vsphereclustertemplates API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereClusterTemplateSpec defines the desired state of VSphereClusterTemplate + properties: + template: + properties: + spec: + description: VSphereClusterSpec defines the desired state of VSphereCluster + properties: + controlPlaneEndpoint: + description: ControlPlaneEndpoint represents the endpoint + used to communicate with the control plane. properties: - controlPlane: - description: |- - ControlPlane indicates whether the referred object is responsible for control plane nodes. - Currently, only the KubeadmControlPlane objects have this flag set to true. - Only a single object in the slice can have this value set to true. - type: boolean - moduleUUID: - description: ModuleUUID is the unique identifier of - the `ClusterModule` used by the object. + host: + description: The hostname on which the API server is serving. type: string - targetObjectName: - description: |- - TargetObjectName points to the object that uses the Cluster Module information to enforce - anti-affinity amongst its descendant VM objects. + port: + description: The port on which the API server is serving. + format: int32 + type: integer + required: + - host + - port + type: object + identityRef: + description: |- + IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains + the identity to use when reconciling the cluster. + properties: + kind: + description: Kind of the identity. Can either be VSphereClusterIdentity + or Secret + enum: + - VSphereClusterIdentity + - Secret + type: string + name: + description: Name of the identity. + minLength: 1 type: string required: - - controlPlane - - moduleUUID - - targetObjectName + - kind + - name type: object - type: array - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint - used to communicate with the control plane. - 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. - format: int32 - type: integer - required: - - host - - port - type: object - failureDomainSelector: - description: |- - FailureDomainSelector is the label selector to use for failure domain selection - for the control plane nodes of the cluster. - If not set (`nil`), selecting failure domains will be disabled. - An empty value (`{}`) selects all existing failure domains. - A valid selector will select all failure domains which match the selector. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string + server: + description: Server is the address of the vSphere endpoint. + type: string + thumbprint: + description: Thumbprint is the colon-separated SHA-1 checksum + of the given vCenter server's host certificate + type: string + type: object + required: + - spec + type: object + required: + - template + type: object + type: object + served: false + storage: false + - name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereClusterTemplate is the Schema for the vsphereclustertemplates + API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereClusterTemplateSpec defines the desired state of VSphereClusterTemplate. + properties: + template: + description: VSphereClusterTemplateResource describes the data for + creating a VSphereCluster from a template. + properties: + spec: + description: VSphereClusterSpec defines the desired state of VSphereCluster. + properties: + clusterModules: + description: |- + ClusterModules hosts information regarding the anti-affinity vSphere constructs + for each of the objects responsible for creation of VM objects belonging to the cluster. + items: description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. + ClusterModule holds the anti affinity construct `ClusterModule` identifier + in use by the VMs owned by the object referred by the TargetObjectName field. + properties: + controlPlane: + description: |- + ControlPlane indicates whether the referred object is responsible for control plane nodes. + Currently, only the KubeadmControlPlane objects have this flag set to true. + Only a single object in the slice can have this value set to true. + type: boolean + moduleUUID: + description: ModuleUUID is the unique identifier of + the `ClusterModule` used by the object. + type: string + targetObjectName: + description: |- + TargetObjectName points to the object that uses the Cluster Module information to enforce + anti-affinity amongst its descendant VM objects. + type: string + required: + - controlPlane + - moduleUUID + - targetObjectName type: object - type: object - x-kubernetes-map-type: atomic - identityRef: - description: |- - IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains - the identity to use when reconciling the cluster. - properties: - kind: - description: Kind of the identity. Can either be VSphereClusterIdentity - or Secret - enum: - - VSphereClusterIdentity - - Secret - type: string - name: - description: Name of the identity. - minLength: 1 - type: string - required: - - kind - - name - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - thumbprint: - description: Thumbprint is the colon-separated SHA-1 checksum - of the given vCenter server's host certificate - type: string - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: true - storage: true + type: array + controlPlaneEndpoint: + description: ControlPlaneEndpoint represents the endpoint + used to communicate with the control plane. + 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. + format: int32 + type: integer + required: + - host + - port + type: object + failureDomainSelector: + description: |- + FailureDomainSelector is the label selector to use for failure domain selection + for the control plane nodes of the cluster. + If not set (`nil`), selecting failure domains will be disabled. + An empty value (`{}`) selects all existing failure domains. + A valid selector will select all failure domains which match the selector. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + identityRef: + description: |- + IdentityRef is a reference to either a Secret or VSphereClusterIdentity that contains + the identity to use when reconciling the cluster. + properties: + kind: + description: Kind of the identity. Can either be VSphereClusterIdentity + or Secret + enum: + - VSphereClusterIdentity + - Secret + type: string + name: + description: Name of the identity. + minLength: 1 + type: string + required: + - kind + - name + type: object + server: + description: Server is the address of the vSphere endpoint. + type: string + thumbprint: + description: Thumbprint is the colon-separated SHA-1 checksum + of the given vCenter server's host certificate + type: string + type: object + required: + - spec + type: object + required: + - template + type: object + type: object + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -1637,374 +1628,372 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereDeploymentZone listKind: VSphereDeploymentZoneList plural: vspheredeploymentzones singular: vspheredeploymentzone scope: Cluster versions: - - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereDeploymentZone is the Schema for the vspheredeploymentzones API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereDeploymentZoneSpec defines the desired state of VSphereDeploymentZone - properties: - controlPlane: - description: ControlPlane determines if this failure domain is suitable - for use by control plane machines. - type: boolean - failureDomain: - description: failureDomain is the name of the VSphereFailureDomain - used for this VSphereDeploymentZone - type: string - placementConstraint: - description: |- - PlacementConstraint encapsulates the placement constraints - used within this deployment zone. - properties: - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - required: - - placementConstraint - type: object - status: - properties: - conditions: - description: Conditions defines current service state of the VSphereMachine. - items: - description: Condition defines an observation of a Cluster API resource - operational state. + - deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereDeploymentZone is the Schema for the vspheredeploymentzones API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereDeploymentZoneSpec defines the desired state of VSphereDeploymentZone + properties: + controlPlane: + description: ControlPlane determines if this failure domain is suitable + for use by control plane machines. + type: boolean + failureDomain: + description: failureDomain is the name of the VSphereFailureDomain + used for this VSphereDeploymentZone + type: string + placementConstraint: + description: |- + PlacementConstraint encapsulates the placement constraints + used within this deployment zone. properties: - lastTransitionTime: + folder: description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. type: string - message: + resourcePool: description: |- - A human readable message indicating details about the transition. - This field may be empty. + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type type: object - type: array - ready: - description: |- - Ready is true when the VSphereDeploymentZone resource is ready. - If set to false, it will be ignored by VSphereClusters - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereDeploymentZone is the Schema for the vspheredeploymentzones API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereDeploymentZoneSpec defines the desired state of VSphereDeploymentZone - properties: - controlPlane: - description: ControlPlane determines if this failure domain is suitable - for use by control plane machines. - type: boolean - failureDomain: - description: FailureDomain is the name of the VSphereFailureDomain - used for this VSphereDeploymentZone - type: string - placementConstraint: - description: |- - PlacementConstraint encapsulates the placement constraints - used within this deployment zone. - properties: - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - required: - - placementConstraint - type: object - status: - properties: - conditions: - description: Conditions defines current service state of the VSphereMachine. - items: - description: Condition defines an observation of a Cluster API resource - operational state. + server: + description: Server is the address of the vSphere endpoint. + type: string + required: + - placementConstraint + type: object + status: + properties: + conditions: + description: Conditions defines current service state of the VSphereMachine. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + ready: + description: |- + Ready is true when the VSphereDeploymentZone resource is ready. + If set to false, it will be ignored by VSphereClusters + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereDeploymentZone is the Schema for the vspheredeploymentzones API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereDeploymentZoneSpec defines the desired state of VSphereDeploymentZone + properties: + controlPlane: + description: ControlPlane determines if this failure domain is suitable + for use by control plane machines. + type: boolean + failureDomain: + description: FailureDomain is the name of the VSphereFailureDomain + used for this VSphereDeploymentZone + type: string + placementConstraint: + description: |- + PlacementConstraint encapsulates the placement constraints + used within this deployment zone. properties: - lastTransitionTime: + folder: description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. type: string - message: + resourcePool: description: |- - A human readable message indicating details about the transition. - This field may be empty. + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type type: object - type: array - ready: - description: |- - Ready is true when the VSphereDeploymentZone resource is ready. - If set to false, it will be ignored by VSphereClusters - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereDeploymentZone is the Schema for the vspheredeploymentzones - API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereDeploymentZoneSpec defines the desired state of VSphereDeploymentZone. - properties: - controlPlane: - description: ControlPlane determines if this failure domain is suitable - for use by control plane machines. - type: boolean - failureDomain: - description: FailureDomain is the name of the VSphereFailureDomain - used for this VSphereDeploymentZone - type: string - placementConstraint: - description: |- - PlacementConstraint encapsulates the placement constraints - used within this deployment zone. - properties: - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - type: object - server: - description: Server is the address of the vSphere endpoint. - type: string - required: - - placementConstraint - type: object - status: - description: VSphereDeploymentZoneStatus contains the status for a VSphereDeploymentZone. - properties: - conditions: - description: Conditions defines current service state of the VSphereMachine. - items: - description: Condition defines an observation of a Cluster API resource - operational state. + server: + description: Server is the address of the vSphere endpoint. + type: string + required: + - placementConstraint + type: object + status: + properties: + conditions: + description: Conditions defines current service state of the VSphereMachine. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + ready: + description: |- + Ready is true when the VSphereDeploymentZone resource is ready. + If set to false, it will be ignored by VSphereClusters + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereDeploymentZone is the Schema for the vspheredeploymentzones + API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereDeploymentZoneSpec defines the desired state of VSphereDeploymentZone. + properties: + controlPlane: + description: ControlPlane determines if this failure domain is suitable + for use by control plane machines. + type: boolean + failureDomain: + description: FailureDomain is the name of the VSphereFailureDomain + used for this VSphereDeploymentZone + type: string + placementConstraint: + description: |- + PlacementConstraint encapsulates the placement constraints + used within this deployment zone. properties: - lastTransitionTime: + folder: description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. type: string - message: + resourcePool: description: |- - A human readable message indicating details about the transition. - This field may be empty. + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - lastTransitionTime - - status - - type type: object - type: array - ready: - description: |- - Ready is true when the VSphereDeploymentZone resource is ready. - If set to false, it will be ignored by VSphereClusters - type: boolean - type: object - type: object - served: true - storage: true - subresources: - status: {} + server: + description: Server is the address of the vSphere endpoint. + type: string + required: + - placementConstraint + type: object + status: + description: VSphereDeploymentZoneStatus contains the status for a VSphereDeploymentZone. + properties: + conditions: + description: Conditions defines current service state of the VSphereMachine. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - lastTransitionTime + - status + - type + type: object + type: array + ready: + description: |- + Ready is true when the VSphereDeploymentZone resource is ready. + If set to false, it will be ignored by VSphereClusters + type: boolean + type: object + type: object + served: true + storage: true + subresources: + status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -2019,421 +2008,417 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereFailureDomain listKind: VSphereFailureDomainList plural: vspherefailuredomains singular: vspherefailuredomain scope: Cluster versions: - - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereFailureDomain is the Schema for the vspherefailuredomains API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereFailureDomainSpec defines the desired state of VSphereFailureDomain - properties: - region: - description: Region defines the name and type of a region - properties: - autoConfigure: - description: AutoConfigure tags the Type which is specified in - the Topology - type: boolean - name: - description: Name is the name of the tag that represents this - failure domain - type: string - tagCategory: - description: TagCategory is the category used for the tag - type: string - type: - description: Type is the type of failure domain, the current values - are "Datacenter", "ComputeCluster" and "HostGroup" - enum: - - Datacenter - - ComputeCluster - - HostGroup - type: string - required: - - name - - tagCategory - - type - type: object - topology: - description: Topology is the what describes a given failure domain - using vSphere constructs - properties: - computeCluster: - description: ComputeCluster as the failure domain - type: string - datacenter: - description: |- - The underlying infrastructure for this failure domain - Datacenter as the failure domain - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - hosts: - description: Hosts has information required for placement of machines - on VSphere hosts. - properties: - hostGroupName: - description: HostGroupName is the name of the Host group - type: string - vmGroupName: - description: VMGroupName is the name of the VM group - type: string - required: - - hostGroupName - - vmGroupName - type: object - networks: - description: Networks is the list of networks within this failure - domain - items: + - deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereFailureDomain is the Schema for the vspherefailuredomains API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereFailureDomainSpec defines the desired state of VSphereFailureDomain + properties: + region: + description: Region defines the name and type of a region + properties: + autoConfigure: + description: AutoConfigure tags the Type which is specified in + the Topology + type: boolean + name: + description: Name is the name of the tag that represents this + failure domain type: string - type: array - required: - - datacenter - type: object - zone: - description: Zone defines the name and type of a zone - properties: - autoConfigure: - description: AutoConfigure tags the Type which is specified in - the Topology - type: boolean - name: - description: Name is the name of the tag that represents this - failure domain - type: string - tagCategory: - description: TagCategory is the category used for the tag - type: string - type: - description: Type is the type of failure domain, the current values - are "Datacenter", "ComputeCluster" and "HostGroup" - enum: - - Datacenter - - ComputeCluster - - HostGroup - type: string - required: - - name - - tagCategory - - type - type: object - required: - - region - - topology - - zone - type: object - type: object - served: false - storage: false - - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereFailureDomain is the Schema for the vspherefailuredomains API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereFailureDomainSpec defines the desired state of VSphereFailureDomain - properties: - region: - description: Region defines the name and type of a region - properties: - autoConfigure: - description: AutoConfigure tags the Type which is specified in - the Topology - type: boolean - name: - description: Name is the name of the tag that represents this - failure domain - type: string - tagCategory: - description: TagCategory is the category used for the tag - type: string - type: - description: Type is the type of failure domain, the current values - are "Datacenter", "ComputeCluster" and "HostGroup" - enum: - - Datacenter - - ComputeCluster - - HostGroup - type: string - required: - - name - - tagCategory - - type - type: object - topology: - description: Topology describes a given failure domain using vSphere - constructs - properties: - computeCluster: - description: ComputeCluster as the failure domain - type: string - datacenter: - description: |- - The underlying infrastructure for this failure domain - Datacenter as the failure domain - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - hosts: - description: Hosts has information required for placement of machines - on VSphere hosts. - properties: - hostGroupName: - description: HostGroupName is the name of the Host group - type: string - vmGroupName: - description: VMGroupName is the name of the VM group - type: string - required: - - hostGroupName - - vmGroupName - type: object - networks: - description: Networks is the list of networks within this failure - domain - items: + tagCategory: + description: TagCategory is the category used for the tag type: string - type: array - required: - - datacenter - type: object - zone: - description: Zone defines the name and type of a zone - properties: - autoConfigure: - description: AutoConfigure tags the Type which is specified in - the Topology - type: boolean - name: - description: Name is the name of the tag that represents this - failure domain - type: string - tagCategory: - description: TagCategory is the category used for the tag - type: string - type: - description: Type is the type of failure domain, the current values - are "Datacenter", "ComputeCluster" and "HostGroup" - enum: - - Datacenter - - ComputeCluster - - HostGroup - type: string - required: - - name - - tagCategory - - type - type: object - required: - - region - - topology - - zone - type: object - type: object - served: false - storage: false - - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereFailureDomain is the Schema for the vspherefailuredomains - API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereFailureDomainSpec defines the desired state of VSphereFailureDomain. - properties: - region: - description: Region defines the name and type of a region - properties: - autoConfigure: - description: |- - AutoConfigure tags the Type which is specified in the Topology - - - Deprecated: This field is going to be removed in a future release. - type: boolean - name: - description: Name is the name of the tag that represents this - failure domain - type: string - tagCategory: - description: TagCategory is the category used for the tag - type: string - type: - description: Type is the type of failure domain, the current values - are "Datacenter", "ComputeCluster" and "HostGroup" - enum: - - Datacenter - - ComputeCluster - - HostGroup - type: string - required: - - name - - tagCategory - - type - type: object - topology: - description: Topology describes a given failure domain using vSphere - constructs - properties: - computeCluster: - description: ComputeCluster as the failure domain - type: string - datacenter: - description: Datacenter as the failure domain. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - hosts: - description: Hosts has information required for placement of machines - on VSphere hosts. - properties: - hostGroupName: - description: HostGroupName is the name of the Host group - type: string - vmGroupName: - description: VMGroupName is the name of the VM group - type: string - required: - - hostGroupName - - vmGroupName - type: object - networks: - description: Networks is the list of networks within this failure - domain - items: + type: + description: Type is the type of failure domain, the current values + are "Datacenter", "ComputeCluster" and "HostGroup" + enum: + - Datacenter + - ComputeCluster + - HostGroup type: string - type: array - required: - - datacenter - type: object - zone: - description: Zone defines the name and type of a zone - properties: - autoConfigure: - description: |- - AutoConfigure tags the Type which is specified in the Topology - - - Deprecated: This field is going to be removed in a future release. - type: boolean - name: - description: Name is the name of the tag that represents this - failure domain - type: string - tagCategory: - description: TagCategory is the category used for the tag - type: string - type: - description: Type is the type of failure domain, the current values - are "Datacenter", "ComputeCluster" and "HostGroup" - enum: - - Datacenter - - ComputeCluster - - HostGroup - type: string - required: - - name - - tagCategory - - type - type: object - required: - - region - - topology - - zone - type: object - type: object - served: true - storage: true + required: + - name + - tagCategory + - type + type: object + topology: + description: Topology is the what describes a given failure domain + using vSphere constructs + properties: + computeCluster: + description: ComputeCluster as the failure domain + type: string + datacenter: + description: |- + The underlying infrastructure for this failure domain + Datacenter as the failure domain + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + hosts: + description: Hosts has information required for placement of machines + on VSphere hosts. + properties: + hostGroupName: + description: HostGroupName is the name of the Host group + type: string + vmGroupName: + description: VMGroupName is the name of the VM group + type: string + required: + - hostGroupName + - vmGroupName + type: object + networks: + description: Networks is the list of networks within this failure + domain + items: + type: string + type: array + required: + - datacenter + type: object + zone: + description: Zone defines the name and type of a zone + properties: + autoConfigure: + description: AutoConfigure tags the Type which is specified in + the Topology + type: boolean + name: + description: Name is the name of the tag that represents this + failure domain + type: string + tagCategory: + description: TagCategory is the category used for the tag + type: string + type: + description: Type is the type of failure domain, the current values + are "Datacenter", "ComputeCluster" and "HostGroup" + enum: + - Datacenter + - ComputeCluster + - HostGroup + type: string + required: + - name + - tagCategory + - type + type: object + required: + - region + - topology + - zone + type: object + type: object + served: false + storage: false + - deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereFailureDomain is the Schema for the vspherefailuredomains API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereFailureDomainSpec defines the desired state of VSphereFailureDomain + properties: + region: + description: Region defines the name and type of a region + properties: + autoConfigure: + description: AutoConfigure tags the Type which is specified in + the Topology + type: boolean + name: + description: Name is the name of the tag that represents this + failure domain + type: string + tagCategory: + description: TagCategory is the category used for the tag + type: string + type: + description: Type is the type of failure domain, the current values + are "Datacenter", "ComputeCluster" and "HostGroup" + enum: + - Datacenter + - ComputeCluster + - HostGroup + type: string + required: + - name + - tagCategory + - type + type: object + topology: + description: Topology describes a given failure domain using vSphere + constructs + properties: + computeCluster: + description: ComputeCluster as the failure domain + type: string + datacenter: + description: |- + The underlying infrastructure for this failure domain + Datacenter as the failure domain + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + hosts: + description: Hosts has information required for placement of machines + on VSphere hosts. + properties: + hostGroupName: + description: HostGroupName is the name of the Host group + type: string + vmGroupName: + description: VMGroupName is the name of the VM group + type: string + required: + - hostGroupName + - vmGroupName + type: object + networks: + description: Networks is the list of networks within this failure + domain + items: + type: string + type: array + required: + - datacenter + type: object + zone: + description: Zone defines the name and type of a zone + properties: + autoConfigure: + description: AutoConfigure tags the Type which is specified in + the Topology + type: boolean + name: + description: Name is the name of the tag that represents this + failure domain + type: string + tagCategory: + description: TagCategory is the category used for the tag + type: string + type: + description: Type is the type of failure domain, the current values + are "Datacenter", "ComputeCluster" and "HostGroup" + enum: + - Datacenter + - ComputeCluster + - HostGroup + type: string + required: + - name + - tagCategory + - type + type: object + required: + - region + - topology + - zone + type: object + type: object + served: false + storage: false + - name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereFailureDomain is the Schema for the vspherefailuredomains + API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereFailureDomainSpec defines the desired state of VSphereFailureDomain. + properties: + region: + description: Region defines the name and type of a region + properties: + autoConfigure: + description: |- + AutoConfigure tags the Type which is specified in the Topology + + Deprecated: This field is going to be removed in a future release. + type: boolean + name: + description: Name is the name of the tag that represents this + failure domain + type: string + tagCategory: + description: TagCategory is the category used for the tag + type: string + type: + description: Type is the type of failure domain, the current values + are "Datacenter", "ComputeCluster" and "HostGroup" + enum: + - Datacenter + - ComputeCluster + - HostGroup + type: string + required: + - name + - tagCategory + - type + type: object + topology: + description: Topology describes a given failure domain using vSphere + constructs + properties: + computeCluster: + description: ComputeCluster as the failure domain + type: string + datacenter: + description: Datacenter as the failure domain. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + hosts: + description: Hosts has information required for placement of machines + on VSphere hosts. + properties: + hostGroupName: + description: HostGroupName is the name of the Host group + type: string + vmGroupName: + description: VMGroupName is the name of the VM group + type: string + required: + - hostGroupName + - vmGroupName + type: object + networks: + description: Networks is the list of networks within this failure + domain + items: + type: string + type: array + required: + - datacenter + type: object + zone: + description: Zone defines the name and type of a zone + properties: + autoConfigure: + description: |- + AutoConfigure tags the Type which is specified in the Topology + + Deprecated: This field is going to be removed in a future release. + type: boolean + name: + description: Name is the name of the tag that represents this + failure domain + type: string + tagCategory: + description: TagCategory is the category used for the tag + type: string + type: + description: Type is the type of failure domain, the current values + are "Datacenter", "ComputeCluster" and "HostGroup" + enum: + - Datacenter + - ComputeCluster + - HostGroup + type: string + required: + - name + - tagCategory + - type + type: object + required: + - region + - topology + - zone + type: object + type: object + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -2448,1619 +2433,1619 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereMachine listKind: VSphereMachineList plural: vspheremachines singular: vspheremachine scope: Namespaced versions: - - additionalPrinterColumns: - - description: Cluster to which this VSphereMachine belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: Machine ready status - jsonPath: .status.ready - name: Ready - type: string - - description: VSphereMachine instance ID - jsonPath: .spec.providerID - name: ProviderID - type: string - - description: Machine object which owns this VSphereMachine - jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name - name: Machine - priority: 1 - type: string - - description: Time duration since creation of Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereMachine is the Schema for the vspheremachines API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereMachineSpec defines the desired state of VSphereMachine - properties: - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + - additionalPrinterColumns: + - description: Cluster to which this VSphereMachine belongs + jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name + name: Cluster + type: string + - description: Machine ready status + jsonPath: .status.ready + name: Ready + type: string + - description: VSphereMachine instance ID + jsonPath: .spec.providerID + name: ProviderID + type: string + - description: Machine object which owns this VSphereMachine + jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name + name: Machine + priority: 1 + type: string + - description: Time duration since creation of Machine + jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereMachine is the Schema for the vspheremachines API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereMachineSpec defines the desired state of VSphereMachine + properties: + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - failureDomain: - description: |- - FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. - For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. - type: string - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this machine's - VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP6 is false. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4 and DHCP6 are both false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission Unit - size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static routes - applied to the device. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine + customVMXKeys: + additionalProperties: type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network route. - properties: - metric: - description: Metric is the weight/priority of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - providerID: - description: |- - ProviderID is the virtual machine's BIOS UUID formated as - vsphere://12345678-1234-1234-1234-123456789abc - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - status: - description: VSphereMachineStatus defines the observed state of VSphereMachine - properties: - addresses: - description: Addresses contains the VSphere instance associated addresses. - items: - description: MachineAddress contains information for the node's - address. - properties: - address: - description: The machine address. - type: string - type: - description: Machine address type, one of Hostname, ExternalIP - or InternalIP. - type: string - required: - - address - - type + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map type: object - type: array - conditions: - description: Conditions defines current service state of the VSphereMachine. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - failureMessage: - description: |- - FailureMessage will be set in the event that there is a terminal problem - reconciling the Machine and will contain a more verbose string suitable - for logging and human consumption. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the Machine's spec or the configuration of - the controller, and that manual intervention is required. Examples - of terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the - responsible controller itself being critically misconfigured. - - - Any transient errors that occur during the reconciliation of Machines - can be added as events to the Machine object and/or logged in the - controller's output. - type: string - failureReason: - description: |- - FailureReason will be set in the event that there is a terminal problem - reconciling the Machine and will contain a succinct value suitable - for machine interpretation. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the Machine's spec or the configuration of - the controller, and that manual intervention is required. Examples - of terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the - responsible controller itself being critically misconfigured. - - - Any transient errors that occur during the reconciliation of Machines - can be added as events to the Machine object and/or logged in the - controller's output. - type: string - network: - description: |- - Network returns the network status for each of the machine's configured - network interfaces. - items: - description: NetworkStatus provides information about one of a VM's - networks. - properties: - connected: - description: |- - Connected is a flag that indicates whether this network is currently - connected to the VM. - type: boolean - ipAddrs: - description: IPAddrs is one or more IP addresses reported by - vm-tools. - items: - type: string - type: array - macAddr: - description: MACAddr is the MAC address of the network device. - type: string - networkName: - description: NetworkName is the name of the network. - type: string - required: - - macAddr - type: object - type: array - ready: - description: Ready is true when the provider resource is ready. - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: Cluster to which this VSphereMachine belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: Machine ready status - jsonPath: .status.ready - name: Ready - type: string - - description: VSphereMachine instance ID - jsonPath: .spec.providerID - name: ProviderID - type: string - - description: Machine object which owns this VSphereMachine - jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name - name: Machine - priority: 1 - type: string - - description: Time duration since creation of Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereMachine is the Schema for the vspheremachines API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereMachineSpec defines the desired state of VSphereMachine - properties: - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - failureDomain: - description: |- - FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. - For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. - type: string - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this machine's - VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP6 is false. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4 and DHCP6 are both false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission Unit - size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static routes - applied to the device. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine - type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network route. - properties: - metric: - description: Metric is the weight/priority of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - providerID: - description: |- - ProviderID is the virtual machine's BIOS UUID formated as - vsphere://12345678-1234-1234-1234-123456789abc - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - status: - description: VSphereMachineStatus defines the observed state of VSphereMachine - properties: - addresses: - description: Addresses contains the VSphere instance associated addresses. - items: - description: MachineAddress contains information for the node's - address. - properties: - address: - description: The machine address. - type: string - type: - description: Machine address type, one of Hostname, ExternalIP - or InternalIP. - type: string - required: - - address - - type - type: object - type: array - conditions: - description: Conditions defines current service state of the VSphereMachine. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - failureMessage: - description: |- - FailureMessage will be set in the event that there is a terminal problem - reconciling the Machine and will contain a more verbose string suitable - for logging and human consumption. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the Machine's spec or the configuration of - the controller, and that manual intervention is required. Examples - of terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the - responsible controller itself being critically misconfigured. - - - Any transient errors that occur during the reconciliation of Machines - can be added as events to the Machine object and/or logged in the - controller's output. - type: string - failureReason: - description: |- - FailureReason will be set in the event that there is a terminal problem - reconciling the Machine and will contain a succinct value suitable - for machine interpretation. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the Machine's spec or the configuration of - the controller, and that manual intervention is required. Examples - of terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the - responsible controller itself being critically misconfigured. - - - Any transient errors that occur during the reconciliation of Machines - can be added as events to the Machine object and/or logged in the - controller's output. - type: string - network: - description: |- - Network returns the network status for each of the machine's configured - network interfaces. - items: - description: NetworkStatus provides information about one of a VM's - networks. - properties: - connected: - description: |- - Connected is a flag that indicates whether this network is currently - connected to the VM. - type: boolean - ipAddrs: - description: IPAddrs is one or more IP addresses reported by - vm-tools. - items: - type: string - type: array - macAddr: - description: MACAddr is the MAC address of the network device. - type: string - networkName: - description: NetworkName is the name of the network. - type: string - required: - - macAddr - type: object - type: array - ready: - description: Ready is true when the provider resource is ready. - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - description: Cluster to which this VSphereMachine belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: Machine ready status - jsonPath: .status.ready - name: Ready - type: string - - description: VSphereMachine instance ID - jsonPath: .spec.providerID - name: ProviderID - type: string - - description: Machine object which owns with this VSphereMachine - jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name - name: Machine - priority: 1 - type: string - - description: Time duration since creation of Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereMachine is the Schema for the vspheremachines API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereMachineSpec defines the desired state of VSphereMachine. - properties: - additionalDisksGiB: - description: |- - AdditionalDisksGiB holds the sizes of additional disks of the virtual machine, in GiB - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - items: + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. format: int32 type: integer - type: array - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + failureDomain: + description: |- + FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. + For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - Defaults to * which selects the default datacenter. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - failureDomain: - description: |- - FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. - For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. - type: string - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - guestSoftPowerOffTimeout: - description: |- - GuestSoftPowerOffTimeout sets the wait timeout for shutdown in the VM guest. - The VM will be powered off forcibly after the timeout if the VM is still - up and running when the PowerOffMode is set to trySoft. - - - This parameter only applies when the PowerOffMode is set to trySoft. - - - If omitted, the timeout defaults to 5 minutes. - type: string - hardwareVersion: - description: |- - HardwareVersion is the hardware version of the virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Check the compatibility with the ESXi version before setting the value. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this machine's - VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - addressesFromPools: - description: |- - AddressesFromPools is a list of IPAddressPools that should be assigned - to IPAddressClaims. The machine's cloud-init metadata will be populated - with IPAddresses fulfilled by an IPAM provider. - items: - description: |- - TypedLocalObjectReference contains enough information to let you locate the - typed referenced object inside the same namespace. - 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 - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - type: array - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp4Overrides: - description: |- - DHCP4Overrides allows for the control over several DHCP behaviors. - Overrides will only be applied when the corresponding DHCP flag is set. - Only configured values will be sent, omitted values will default to - distribution defaults. - Dependent on support in the network stack for your distribution. - For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) - properties: - hostname: - description: |- - Hostname is the name which will be sent to the DHCP server instead of - the machine's hostname. - type: string - routeMetric: - description: |- - RouteMetric is used to prioritize routes for devices. A lower metric for - an interface will have a higher priority. - type: integer - sendHostname: - description: |- - SendHostname when `true`, the hostname of the machine will be sent to the - DHCP server. - type: boolean - useDNS: - description: |- - UseDNS when `true`, the DNS servers in the DHCP server will be used and - take precedence. - type: boolean - useDomains: - description: |- - UseDomains can take the values `true`, `false`, or `route`. When `true`, - the domain name from the DHCP server will be used as the DNS search - domain for this device. When `route`, the domain name from the DHCP - response will be used for routing DNS only, not for searching. - type: string - useHostname: - description: |- - UseHostname when `true`, the hostname from the DHCP server will be set - as the transient hostname of the machine. - type: boolean - useMTU: - description: |- - UseMTU when `true`, the MTU from the DHCP server will be set as the - MTU of the device. - type: boolean - useNTP: - description: |- - UseNTP when `true`, the NTP servers from the DHCP server will be used - by systemd-timesyncd and take precedence. - type: boolean - useRoutes: - description: |- - UseRoutes when `true`, the routes from the DHCP server will be installed - in the routing table. - type: string - type: object - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - dhcp6Overrides: - description: |- - DHCP6Overrides allows for the control over several DHCP behaviors. - Overrides will only be applied when the corresponding DHCP flag is set. - Only configured values will be sent, omitted values will default to - distribution defaults. - Dependent on support in the network stack for your distribution. - For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) - properties: - hostname: - description: |- - Hostname is the name which will be sent to the DHCP server instead of - the machine's hostname. - type: string - routeMetric: - description: |- - RouteMetric is used to prioritize routes for devices. A lower metric for - an interface will have a higher priority. - type: integer - sendHostname: - description: |- - SendHostname when `true`, the hostname of the machine will be sent to the - DHCP server. - type: boolean - useDNS: - description: |- - UseDNS when `true`, the DNS servers in the DHCP server will be used and - take precedence. - type: boolean - useDomains: - description: |- - UseDomains can take the values `true`, `false`, or `route`. When `true`, - the domain name from the DHCP server will be used as the DNS search - domain for this device. When `route`, the domain name from the DHCP - response will be used for routing DNS only, not for searching. - type: string - useHostname: - description: |- - UseHostname when `true`, the hostname from the DHCP server will be set - as the transient hostname of the machine. - type: boolean - useMTU: - description: |- - UseMTU when `true`, the MTU from the DHCP server will be set as the - MTU of the device. - type: boolean - useNTP: - description: |- - UseNTP when `true`, the NTP servers from the DHCP server will be used - by systemd-timesyncd and take precedence. - type: boolean - useRoutes: - description: |- - UseRoutes when `true`, the routes from the DHCP server will be installed - in the routing table. - type: string - type: object - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: Gateway4 is the IPv4 gateway used by this device. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4, DHCP6 and SkipIPAllocation are false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission Unit - size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static routes - applied to the device. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - skipIPAllocation: - description: |- - SkipIPAllocation allows the device to not have IP address or DHCP configured. - This is suitable for devices for which IP allocation is handled externally, eg. using Multus CNI. - If true, CAPV will not verify IP address allocation. - type: boolean - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine - - - Deprecated: This field is going to be removed in a future release. - type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network route. - properties: - metric: - description: Metric is the weight/priority of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - os: - description: |- - OS is the Operating System of the virtual machine - Defaults to Linux - type: string - pciDevices: - description: PciDevices is the list of pci devices used by the virtual - machine. - items: - description: PCIDeviceSpec defines virtual machine's PCI configuration. - properties: - customLabel: - description: |- - CustomLabel is the hardware label of a virtual machine's PCI device. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - type: string - deviceId: - description: |- - DeviceID is the device ID of a virtual machine's PCI, in integer. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - format: int32 - type: integer - vGPUProfile: - description: |- - VGPUProfile is the profile name of a virtual machine's vGPU, in string. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with DeviceID and VendorID as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - type: string - vendorId: - description: |- - VendorId is the vendor ID of a virtual machine's PCI, in integer. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - format: int32 - type: integer - type: object - type: array - powerOffMode: - default: hard - description: |- - PowerOffMode describes the desired behavior when powering off a VM. - - - There are three, supported power off modes: hard, soft, and - trySoft. The first mode, hard, is the equivalent of a physical - system's power cord being ripped from the wall. The soft mode - requires the VM's guest to have VM Tools installed and attempts to - gracefully shut down the VM. Its variant, trySoft, first attempts - a graceful shutdown, and if that fails or the VM is not in a powered off - state after reaching the GuestSoftPowerOffTimeout, the VM is halted. - - - If omitted, the mode defaults to hard. - enum: - - hard - - soft - - trySoft - type: string - providerID: - description: |- - ProviderID is the virtual machine's BIOS UUID formated as - vsphere://12345678-1234-1234-1234-123456789abc - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - tagIDs: - description: |- - TagIDs is an optional set of tags to add to an instance. Specified tagIDs - must use URN-notation instead of display names. - items: + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. type: string - type: array - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - status: - description: VSphereMachineStatus defines the observed state of VSphereMachine. - properties: - addresses: - description: Addresses contains the VSphere instance associated addresses. - items: - description: MachineAddress contains information for the node's - address. + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this machine's + VM. properties: - address: - description: The machine address. - type: string - type: - description: Machine address type, one of Hostname, ExternalIP, - InternalIP, ExternalDNS or InternalDNS. - type: string - required: - - address - - type - type: object - type: array - conditions: - description: Conditions defines current service state of the VSphereMachine. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - lastTransitionTime - - status - - type - type: object - type: array - failureMessage: - description: |- - FailureMessage will be set in the event that there is a terminal problem - reconciling the Machine and will contain a more verbose string suitable - for logging and human consumption. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the Machine's spec or the configuration of - the controller, and that manual intervention is required. Examples - of terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the - responsible controller itself being critically misconfigured. - - - Any transient errors that occur during the reconciliation of Machines - can be added as events to the Machine object and/or logged in the - controller's output. - type: string - failureReason: - description: |- - FailureReason will be set in the event that there is a terminal problem - reconciling the Machine and will contain a succinct value suitable - for machine interpretation. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the Machine's spec or the configuration of - the controller, and that manual intervention is required. Examples - of terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the - responsible controller itself being critically misconfigured. - - - Any transient errors that occur during the reconciliation of Machines - can be added as events to the Machine object and/or logged in the - controller's output. - type: string - network: - description: |- - Network returns the network status for each of the machine's configured - network interfaces. - items: - description: NetworkStatus provides information about one of a VM's - networks. - properties: - connected: - description: |- - Connected is a flag that indicates whether this network is currently - connected to the VM. - type: boolean - ipAddrs: - description: IPAddrs is one or more IP addresses reported by - vm-tools. + devices: + description: | + Devices is the list of network devices used by the virtual machine. items: - type: string + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP6 is false. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4 and DHCP6 are both false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission Unit + size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static routes + applied to the device. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + required: + - networkName + type: object type: array - macAddr: - description: MACAddr is the MAC address of the network device. - type: string - networkName: - description: NetworkName is the name of the network. + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network route. + properties: + metric: + description: Metric is the weight/priority of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array required: - - macAddr + - devices type: object - type: array - ready: - description: Ready is true when the provider resource is ready. - type: boolean - type: object - type: object - served: true - storage: true - subresources: - status: {} + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + providerID: + description: |- + ProviderID is the virtual machine's BIOS UUID formated as + vsphere://12345678-1234-1234-1234-123456789abc + type: string + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + status: + description: VSphereMachineStatus defines the observed state of VSphereMachine + properties: + addresses: + description: Addresses contains the VSphere instance associated addresses. + items: + description: MachineAddress contains information for the node's + address. + properties: + address: + description: The machine address. + type: string + type: + description: Machine address type, one of Hostname, ExternalIP + or InternalIP. + type: string + required: + - address + - type + type: object + type: array + conditions: + description: Conditions defines current service state of the VSphereMachine. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + failureMessage: + description: |- + FailureMessage will be set in the event that there is a terminal problem + reconciling the Machine and will contain a more verbose string suitable + for logging and human consumption. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the Machine's spec or the configuration of + the controller, and that manual intervention is required. Examples + of terminal errors would be invalid combinations of settings in the + spec, values that are unsupported by the controller, or the + responsible controller itself being critically misconfigured. + + Any transient errors that occur during the reconciliation of Machines + can be added as events to the Machine object and/or logged in the + controller's output. + type: string + failureReason: + description: |- + FailureReason will be set in the event that there is a terminal problem + reconciling the Machine and will contain a succinct value suitable + for machine interpretation. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the Machine's spec or the configuration of + the controller, and that manual intervention is required. Examples + of terminal errors would be invalid combinations of settings in the + spec, values that are unsupported by the controller, or the + responsible controller itself being critically misconfigured. + + Any transient errors that occur during the reconciliation of Machines + can be added as events to the Machine object and/or logged in the + controller's output. + type: string + network: + description: |- + Network returns the network status for each of the machine's configured + network interfaces. + items: + description: NetworkStatus provides information about one of a VM's + networks. + properties: + connected: + description: |- + Connected is a flag that indicates whether this network is currently + connected to the VM. + type: boolean + ipAddrs: + description: IPAddrs is one or more IP addresses reported by + vm-tools. + items: + type: string + type: array + macAddr: + description: MACAddr is the MAC address of the network device. + type: string + networkName: + description: NetworkName is the name of the network. + type: string + required: + - macAddr + type: object + type: array + ready: + description: Ready is true when the provider resource is ready. + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Cluster to which this VSphereMachine belongs + jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name + name: Cluster + type: string + - description: Machine ready status + jsonPath: .status.ready + name: Ready + type: string + - description: VSphereMachine instance ID + jsonPath: .spec.providerID + name: ProviderID + type: string + - description: Machine object which owns this VSphereMachine + jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name + name: Machine + priority: 1 + type: string + - description: Time duration since creation of Machine + jsonPath: .metadata.creationTimestamp + name: Age + type: date + deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereMachine is the Schema for the vspheremachines API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereMachineSpec defines the desired state of VSphereMachine + properties: + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. + type: string + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + failureDomain: + description: |- + FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. + For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. + type: string + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this machine's + VM. + properties: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP6 is false. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4 and DHCP6 are both false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission Unit + size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static routes + applied to the device. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + required: + - networkName + type: object + type: array + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine + type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network route. + properties: + metric: + description: Metric is the weight/priority of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices + type: object + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + providerID: + description: |- + ProviderID is the virtual machine's BIOS UUID formated as + vsphere://12345678-1234-1234-1234-123456789abc + type: string + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + status: + description: VSphereMachineStatus defines the observed state of VSphereMachine + properties: + addresses: + description: Addresses contains the VSphere instance associated addresses. + items: + description: MachineAddress contains information for the node's + address. + properties: + address: + description: The machine address. + type: string + type: + description: Machine address type, one of Hostname, ExternalIP + or InternalIP. + type: string + required: + - address + - type + type: object + type: array + conditions: + description: Conditions defines current service state of the VSphereMachine. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + failureMessage: + description: |- + FailureMessage will be set in the event that there is a terminal problem + reconciling the Machine and will contain a more verbose string suitable + for logging and human consumption. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the Machine's spec or the configuration of + the controller, and that manual intervention is required. Examples + of terminal errors would be invalid combinations of settings in the + spec, values that are unsupported by the controller, or the + responsible controller itself being critically misconfigured. + + Any transient errors that occur during the reconciliation of Machines + can be added as events to the Machine object and/or logged in the + controller's output. + type: string + failureReason: + description: |- + FailureReason will be set in the event that there is a terminal problem + reconciling the Machine and will contain a succinct value suitable + for machine interpretation. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the Machine's spec or the configuration of + the controller, and that manual intervention is required. Examples + of terminal errors would be invalid combinations of settings in the + spec, values that are unsupported by the controller, or the + responsible controller itself being critically misconfigured. + + Any transient errors that occur during the reconciliation of Machines + can be added as events to the Machine object and/or logged in the + controller's output. + type: string + network: + description: |- + Network returns the network status for each of the machine's configured + network interfaces. + items: + description: NetworkStatus provides information about one of a VM's + networks. + properties: + connected: + description: |- + Connected is a flag that indicates whether this network is currently + connected to the VM. + type: boolean + ipAddrs: + description: IPAddrs is one or more IP addresses reported by + vm-tools. + items: + type: string + type: array + macAddr: + description: MACAddr is the MAC address of the network device. + type: string + networkName: + description: NetworkName is the name of the network. + type: string + required: + - macAddr + type: object + type: array + ready: + description: Ready is true when the provider resource is ready. + type: boolean + type: object + type: object + served: false + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - description: Cluster to which this VSphereMachine belongs + jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name + name: Cluster + type: string + - description: Machine ready status + jsonPath: .status.ready + name: Ready + type: string + - description: VSphereMachine instance ID + jsonPath: .spec.providerID + name: ProviderID + type: string + - description: Machine object which owns with this VSphereMachine + jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name + name: Machine + priority: 1 + type: string + - description: Time duration since creation of Machine + jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereMachine is the Schema for the vspheremachines API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereMachineSpec defines the desired state of VSphereMachine. + properties: + additionalDisksGiB: + description: |- + AdditionalDisksGiB holds the sizes of additional disks of the virtual machine, in GiB + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + items: + format: int32 + type: integer + type: array + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. + type: string + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + dataDisks: + description: DataDisks are additional disks to add to the VM that + are not part of the VM's OVA template. + items: + description: VSphereDisk is an additional disk to add to the VM + that is not part of the VM OVA template. + properties: + name: + description: |- + Name is used to identify the disk definition. Name is required and needs to be unique so that it can be used to + clearly identify purpose of the disk. + type: string + sizeGiB: + description: SizeGiB is the size of the disk in GiB. + format: int32 + type: integer + required: + - name + - sizeGiB + type: object + maxItems: 29 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. + Defaults to * which selects the default datacenter. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + failureDomain: + description: |- + FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. + For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. + type: string + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + guestSoftPowerOffTimeout: + description: |- + GuestSoftPowerOffTimeout sets the wait timeout for shutdown in the VM guest. + The VM will be powered off forcibly after the timeout if the VM is still + up and running when the PowerOffMode is set to trySoft. + + This parameter only applies when the PowerOffMode is set to trySoft. + + If omitted, the timeout defaults to 5 minutes. + type: string + hardwareVersion: + description: |- + HardwareVersion is the hardware version of the virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Check the compatibility with the ESXi version before setting the value. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this machine's + VM. + properties: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + addressesFromPools: + description: |- + AddressesFromPools is a list of IPAddressPools that should be assigned + to IPAddressClaims. The machine's cloud-init metadata will be populated + with IPAddresses fulfilled by an IPAM provider. + items: + description: |- + TypedLocalObjectReference contains enough information to let you locate the + typed referenced object inside the same namespace. + 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 + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + type: array + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp4Overrides: + description: |- + DHCP4Overrides allows for the control over several DHCP behaviors. + Overrides will only be applied when the corresponding DHCP flag is set. + Only configured values will be sent, omitted values will default to + distribution defaults. + Dependent on support in the network stack for your distribution. + For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) + properties: + hostname: + description: |- + Hostname is the name which will be sent to the DHCP server instead of + the machine's hostname. + type: string + routeMetric: + description: |- + RouteMetric is used to prioritize routes for devices. A lower metric for + an interface will have a higher priority. + type: integer + sendHostname: + description: |- + SendHostname when `true`, the hostname of the machine will be sent to the + DHCP server. + type: boolean + useDNS: + description: |- + UseDNS when `true`, the DNS servers in the DHCP server will be used and + take precedence. + type: boolean + useDomains: + description: |- + UseDomains can take the values `true`, `false`, or `route`. When `true`, + the domain name from the DHCP server will be used as the DNS search + domain for this device. When `route`, the domain name from the DHCP + response will be used for routing DNS only, not for searching. + type: string + useHostname: + description: |- + UseHostname when `true`, the hostname from the DHCP server will be set + as the transient hostname of the machine. + type: boolean + useMTU: + description: |- + UseMTU when `true`, the MTU from the DHCP server will be set as the + MTU of the device. + type: boolean + useNTP: + description: |- + UseNTP when `true`, the NTP servers from the DHCP server will be used + by systemd-timesyncd and take precedence. + type: boolean + useRoutes: + description: |- + UseRoutes when `true`, the routes from the DHCP server will be installed + in the routing table. + type: string + type: object + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + dhcp6Overrides: + description: |- + DHCP6Overrides allows for the control over several DHCP behaviors. + Overrides will only be applied when the corresponding DHCP flag is set. + Only configured values will be sent, omitted values will default to + distribution defaults. + Dependent on support in the network stack for your distribution. + For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) + properties: + hostname: + description: |- + Hostname is the name which will be sent to the DHCP server instead of + the machine's hostname. + type: string + routeMetric: + description: |- + RouteMetric is used to prioritize routes for devices. A lower metric for + an interface will have a higher priority. + type: integer + sendHostname: + description: |- + SendHostname when `true`, the hostname of the machine will be sent to the + DHCP server. + type: boolean + useDNS: + description: |- + UseDNS when `true`, the DNS servers in the DHCP server will be used and + take precedence. + type: boolean + useDomains: + description: |- + UseDomains can take the values `true`, `false`, or `route`. When `true`, + the domain name from the DHCP server will be used as the DNS search + domain for this device. When `route`, the domain name from the DHCP + response will be used for routing DNS only, not for searching. + type: string + useHostname: + description: |- + UseHostname when `true`, the hostname from the DHCP server will be set + as the transient hostname of the machine. + type: boolean + useMTU: + description: |- + UseMTU when `true`, the MTU from the DHCP server will be set as the + MTU of the device. + type: boolean + useNTP: + description: |- + UseNTP when `true`, the NTP servers from the DHCP server will be used + by systemd-timesyncd and take precedence. + type: boolean + useRoutes: + description: |- + UseRoutes when `true`, the routes from the DHCP server will be installed + in the routing table. + type: string + type: object + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: Gateway4 is the IPv4 gateway used by this device. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4, DHCP6 and SkipIPAllocation are false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission Unit + size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static routes + applied to the device. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + skipIPAllocation: + description: |- + SkipIPAllocation allows the device to not have IP address or DHCP configured. + This is suitable for devices for which IP allocation is handled externally, eg. using Multus CNI. + If true, CAPV will not verify IP address allocation. + type: boolean + required: + - networkName + type: object + type: array + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine + + Deprecated: This field is going to be removed in a future release. + type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network route. + properties: + metric: + description: Metric is the weight/priority of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices + type: object + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + os: + description: |- + OS is the Operating System of the virtual machine + Defaults to Linux + type: string + pciDevices: + description: PciDevices is the list of pci devices used by the virtual + machine. + items: + description: PCIDeviceSpec defines virtual machine's PCI configuration. + properties: + customLabel: + description: |- + CustomLabel is the hardware label of a virtual machine's PCI device. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + type: string + deviceId: + description: |- + DeviceID is the device ID of a virtual machine's PCI, in integer. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + format: int32 + type: integer + vGPUProfile: + description: |- + VGPUProfile is the profile name of a virtual machine's vGPU, in string. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with DeviceID and VendorID as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + type: string + vendorId: + description: |- + VendorId is the vendor ID of a virtual machine's PCI, in integer. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + format: int32 + type: integer + type: object + type: array + powerOffMode: + default: hard + description: |- + PowerOffMode describes the desired behavior when powering off a VM. + + There are three, supported power off modes: hard, soft, and + trySoft. The first mode, hard, is the equivalent of a physical + system's power cord being ripped from the wall. The soft mode + requires the VM's guest to have VM Tools installed and attempts to + gracefully shut down the VM. Its variant, trySoft, first attempts + a graceful shutdown, and if that fails or the VM is not in a powered off + state after reaching the GuestSoftPowerOffTimeout, the VM is halted. + + If omitted, the mode defaults to hard. + enum: + - hard + - soft + - trySoft + type: string + providerID: + description: |- + ProviderID is the virtual machine's BIOS UUID formated as + vsphere://12345678-1234-1234-1234-123456789abc + type: string + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + tagIDs: + description: |- + TagIDs is an optional set of tags to add to an instance. Specified tagIDs + must use URN-notation instead of display names. + items: + type: string + type: array + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + status: + description: VSphereMachineStatus defines the observed state of VSphereMachine. + properties: + addresses: + description: Addresses contains the VSphere instance associated addresses. + items: + description: MachineAddress contains information for the node's + address. + properties: + address: + description: The machine address. + type: string + type: + description: Machine address type, one of Hostname, ExternalIP, + InternalIP, ExternalDNS or InternalDNS. + type: string + required: + - address + - type + type: object + type: array + conditions: + description: Conditions defines current service state of the VSphereMachine. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - lastTransitionTime + - status + - type + type: object + type: array + failureMessage: + description: |- + FailureMessage will be set in the event that there is a terminal problem + reconciling the Machine and will contain a more verbose string suitable + for logging and human consumption. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the Machine's spec or the configuration of + the controller, and that manual intervention is required. Examples + of terminal errors would be invalid combinations of settings in the + spec, values that are unsupported by the controller, or the + responsible controller itself being critically misconfigured. + + Any transient errors that occur during the reconciliation of Machines + can be added as events to the Machine object and/or logged in the + controller's output. + type: string + failureReason: + description: |- + FailureReason will be set in the event that there is a terminal problem + reconciling the Machine and will contain a succinct value suitable + for machine interpretation. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the Machine's spec or the configuration of + the controller, and that manual intervention is required. Examples + of terminal errors would be invalid combinations of settings in the + spec, values that are unsupported by the controller, or the + responsible controller itself being critically misconfigured. + + Any transient errors that occur during the reconciliation of Machines + can be added as events to the Machine object and/or logged in the + controller's output. + type: string + network: + description: |- + Network returns the network status for each of the machine's configured + network interfaces. + items: + description: NetworkStatus provides information about one of a VM's + networks. + properties: + connected: + description: |- + Connected is a flag that indicates whether this network is currently + connected to the VM. + type: boolean + ipAddrs: + description: IPAddrs is one or more IP addresses reported by + vm-tools. + items: + type: string + type: array + macAddr: + description: MACAddr is the MAC address of the network device. + type: string + networkName: + description: NetworkName is the name of the network. + type: string + required: + - macAddr + type: object + type: array + ready: + description: Ready is true when the provider resource is ready. + type: boolean + type: object + type: object + served: true + storage: true + subresources: + status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -4075,1357 +4060,1362 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereMachineTemplate listKind: VSphereMachineTemplateList plural: vspheremachinetemplates singular: vspheremachinetemplate scope: Namespaced versions: - - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereMachineTemplate is the Schema for the vspheremachinetemplates API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate - properties: - template: - description: VSphereMachineTemplateResource describes the data needed - to create a VSphereMachine from a template - properties: - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - description: |- - Annotations is an unstructured key value map stored with a resource that may be - set by external tools to store and retrieve arbitrary metadata. They are not - queryable and should be preserved when modifying objects. - More info: http://kubernetes.io/docs/user-guide/annotations - type: object - 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. - - - If 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). - - - Applied only if Name is not specified. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency - - - Deprecated: This field has no function and is going to be removed in a next release. - type: string - labels: - additionalProperties: - type: string - description: |- - Map of string keys and values that can be used to organize and categorize - (scope and select) objects. May match selectors of replication controllers - and services. - More info: http://kubernetes.io/docs/user-guide/labels - type: object - name: - description: |- - Name must be unique within a namespace. Is required when creating resources, although - some resources may allow a client to request the generation of an appropriate name - automatically. Name is primarily intended for creation idempotence and configuration - definition. - Cannot be updated. - More info: http://kubernetes.io/docs/user-guide/identifiers#names - - - Deprecated: This field has no function and is going to be removed in a next release. - type: string - namespace: - description: |- - Namespace defines the space within 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. - - - Must be a DNS_LABEL. - Cannot be updated. - More info: http://kubernetes.io/docs/user-guide/namespaces - - - Deprecated: This field has no function and is going to be removed in a next release. - 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. - - - Deprecated: This field has no function and is going to be removed in a next release. - items: + - deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereMachineTemplate is the Schema for the vspheremachinetemplates API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate + properties: + template: + description: VSphereMachineTemplateResource describes the data needed + to create a VSphereMachine from a template + properties: + metadata: + description: |- + Standard object's metadata. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + properties: + annotations: + additionalProperties: + type: string 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. - 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. - See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion - for how the garbage collector interacts with this field and enforces the foreground deletion. - Defaults to false. - To set this field, a user needs "delete" permission of the owner, - otherwise 422 (Unprocessable Entity) will be returned. - type: boolean - controller: - description: If true, this reference points to the managing - controller. - type: boolean - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids - type: string - required: - - apiVersion - - kind - - name - - uid + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: http://kubernetes.io/docs/user-guide/annotations type: object - x-kubernetes-map-type: atomic - type: array - type: object - spec: - description: Spec is the specification of the desired behavior - of the machine. - properties: - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + 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. + + If 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). + + Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency + + Deprecated: This field has no function and is going to be removed in a next release. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - failureDomain: - description: |- - FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. - For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. - type: string - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this - machine's VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP6 is false. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4 and DHCP6 are both false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission - Unit size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static - routes applied to the device. - items: - description: NetworkRouteSpec defines a static - network route. - properties: - metric: - description: Metric is the weight/priority - of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine + labels: + additionalProperties: type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - providerID: - description: |- - ProviderID is the virtual machine's BIOS UUID formated as - vsphere://12345678-1234-1234-1234-123456789abc - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: false - storage: false - - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereMachineTemplate is the Schema for the vspheremachinetemplates API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate - properties: - template: - description: VSphereMachineTemplateResource describes the data needed - to create a VSphereMachine from a template - properties: - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: + description: |- + Map of string keys and values that can be used to organize and categorize + (scope and select) objects. May match selectors of replication controllers + and services. + More info: http://kubernetes.io/docs/user-guide/labels + type: object + name: + description: |- + Name must be unique within a namespace. Is required when creating resources, although + some resources may allow a client to request the generation of an appropriate name + automatically. Name is primarily intended for creation idempotence and configuration + definition. + Cannot be updated. + More info: http://kubernetes.io/docs/user-guide/identifiers#names + + Deprecated: This field has no function and is going to be removed in a next release. type: string - description: |- - Annotations is an unstructured key value map stored with a resource that may be - set by external tools to store and retrieve arbitrary metadata. They are not - queryable and should be preserved when modifying objects. - More info: http://kubernetes.io/docs/user-guide/annotations - type: object - labels: - additionalProperties: + namespace: + description: |- + Namespace defines the space within 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. + + Must be a DNS_LABEL. + Cannot be updated. + More info: http://kubernetes.io/docs/user-guide/namespaces + + Deprecated: This field has no function and is going to be removed in a next release. type: string - description: |- - Map of string keys and values that can be used to organize and categorize - (scope and select) objects. May match selectors of replication controllers - and services. - More info: http://kubernetes.io/docs/user-guide/labels - type: object - type: object - spec: - description: Spec is the specification of the desired behavior - of the machine. - properties: - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + 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. + + Deprecated: This field has no function and is going to be removed in a next release. + 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. + 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. + See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion + for how the garbage collector interacts with this field and enforces the foreground deletion. + Defaults to false. + To set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + type: boolean + controller: + description: If true, this reference points to the managing + controller. + type: boolean + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names + type: string + uid: + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids + type: string + required: + - apiVersion + - kind + - name + - uid + type: object + x-kubernetes-map-type: atomic + type: array + type: object + spec: + description: Spec is the specification of the desired behavior + of the machine. + properties: + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - failureDomain: - description: |- - FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. - For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. - type: string - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this - machine's VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP6 is false. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4 and DHCP6 are both false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission - Unit size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static - routes applied to the device. - items: - description: NetworkRouteSpec defines a static - network route. - properties: - metric: - description: Metric is the weight/priority - of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine + customVMXKeys: + additionalProperties: type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - providerID: - description: |- - ProviderID is the virtual machine's BIOS UUID formated as - vsphere://12345678-1234-1234-1234-123456789abc - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: false - storage: false - - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereMachineTemplate is the Schema for the vspheremachinetemplates - API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate. - properties: - template: - description: VSphereMachineTemplateResource describes the data needed - to create a VSphereMachine from a template. - properties: - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. type: string - description: |- - Annotations is an unstructured key value map stored with a resource that may be - set by external tools to store and retrieve arbitrary metadata. They are not - queryable and should be preserved when modifying objects. - More info: http://kubernetes.io/docs/user-guide/annotations - type: object - labels: - additionalProperties: + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. type: string - description: |- - Map of string keys and values that can be used to organize and categorize - (scope and select) objects. May match selectors of replication controllers - and services. - More info: http://kubernetes.io/docs/user-guide/labels - type: object - type: object - spec: - description: Spec is the specification of the desired behavior - of the machine. - properties: - additionalDisksGiB: - description: |- - AdditionalDisksGiB holds the sizes of additional disks of the virtual machine, in GiB - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - items: + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. format: int32 type: integer - type: array - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + failureDomain: + description: |- + FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. + For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - Defaults to * which selects the default datacenter. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - failureDomain: - description: |- - FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. - For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. - type: string - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - guestSoftPowerOffTimeout: - description: |- - GuestSoftPowerOffTimeout sets the wait timeout for shutdown in the VM guest. - The VM will be powered off forcibly after the timeout if the VM is still - up and running when the PowerOffMode is set to trySoft. - - - This parameter only applies when the PowerOffMode is set to trySoft. - - - If omitted, the timeout defaults to 5 minutes. - type: string - hardwareVersion: - description: |- - HardwareVersion is the hardware version of the virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Check the compatibility with the ESXi version before setting the value. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this - machine's VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - addressesFromPools: - description: |- - AddressesFromPools is a list of IPAddressPools that should be assigned - to IPAddressClaims. The machine's cloud-init metadata will be populated - with IPAddresses fulfilled by an IPAM provider. - items: - description: |- - TypedLocalObjectReference contains enough information to let you locate the - typed referenced object inside the same namespace. - 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 - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - type: array - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp4Overrides: - description: |- - DHCP4Overrides allows for the control over several DHCP behaviors. - Overrides will only be applied when the corresponding DHCP flag is set. - Only configured values will be sent, omitted values will default to - distribution defaults. - Dependent on support in the network stack for your distribution. - For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) - properties: - hostname: - description: |- - Hostname is the name which will be sent to the DHCP server instead of - the machine's hostname. - type: string - routeMetric: - description: |- - RouteMetric is used to prioritize routes for devices. A lower metric for - an interface will have a higher priority. - type: integer - sendHostname: - description: |- - SendHostname when `true`, the hostname of the machine will be sent to the - DHCP server. - type: boolean - useDNS: - description: |- - UseDNS when `true`, the DNS servers in the DHCP server will be used and - take precedence. - type: boolean - useDomains: - description: |- - UseDomains can take the values `true`, `false`, or `route`. When `true`, - the domain name from the DHCP server will be used as the DNS search - domain for this device. When `route`, the domain name from the DHCP - response will be used for routing DNS only, not for searching. - type: string - useHostname: - description: |- - UseHostname when `true`, the hostname from the DHCP server will be set - as the transient hostname of the machine. - type: boolean - useMTU: - description: |- - UseMTU when `true`, the MTU from the DHCP server will be set as the - MTU of the device. - type: boolean - useNTP: - description: |- - UseNTP when `true`, the NTP servers from the DHCP server will be used - by systemd-timesyncd and take precedence. - type: boolean - useRoutes: - description: |- - UseRoutes when `true`, the routes from the DHCP server will be installed - in the routing table. - type: string - type: object - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - dhcp6Overrides: - description: |- - DHCP6Overrides allows for the control over several DHCP behaviors. - Overrides will only be applied when the corresponding DHCP flag is set. - Only configured values will be sent, omitted values will default to - distribution defaults. - Dependent on support in the network stack for your distribution. - For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) - properties: - hostname: - description: |- - Hostname is the name which will be sent to the DHCP server instead of - the machine's hostname. - type: string - routeMetric: - description: |- - RouteMetric is used to prioritize routes for devices. A lower metric for - an interface will have a higher priority. - type: integer - sendHostname: - description: |- - SendHostname when `true`, the hostname of the machine will be sent to the - DHCP server. - type: boolean - useDNS: - description: |- - UseDNS when `true`, the DNS servers in the DHCP server will be used and - take precedence. - type: boolean - useDomains: - description: |- - UseDomains can take the values `true`, `false`, or `route`. When `true`, - the domain name from the DHCP server will be used as the DNS search - domain for this device. When `route`, the domain name from the DHCP - response will be used for routing DNS only, not for searching. - type: string - useHostname: - description: |- - UseHostname when `true`, the hostname from the DHCP server will be set - as the transient hostname of the machine. - type: boolean - useMTU: - description: |- - UseMTU when `true`, the MTU from the DHCP server will be set as the - MTU of the device. - type: boolean - useNTP: - description: |- - UseNTP when `true`, the NTP servers from the DHCP server will be used - by systemd-timesyncd and take precedence. - type: boolean - useRoutes: - description: |- - UseRoutes when `true`, the routes from the DHCP server will be installed - in the routing table. - type: string - type: object - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: Gateway4 is the IPv4 gateway used by - this device. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4, DHCP6 and SkipIPAllocation are false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission - Unit size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static - routes applied to the device. - items: - description: NetworkRouteSpec defines a static - network route. - properties: - metric: - description: Metric is the weight/priority - of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - skipIPAllocation: - description: |- - SkipIPAllocation allows the device to not have IP address or DHCP configured. - This is suitable for devices for which IP allocation is handled externally, eg. using Multus CNI. - If true, CAPV will not verify IP address allocation. - type: boolean - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine - - - Deprecated: This field is going to be removed in a future release. - type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - os: - description: |- - OS is the Operating System of the virtual machine - Defaults to Linux - type: string - pciDevices: - description: PciDevices is the list of pci devices used by - the virtual machine. - items: - description: PCIDeviceSpec defines virtual machine's PCI - configuration. + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this + machine's VM. properties: - customLabel: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP6 is false. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4 and DHCP6 are both false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission + Unit size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static + routes applied to the device. + items: + description: NetworkRouteSpec defines a static + network route. + properties: + metric: + description: Metric is the weight/priority + of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + required: + - networkName + type: object + type: array + preferredAPIServerCidr: description: |- - CustomLabel is the hardware label of a virtual machine's PCI device. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine type: string - deviceId: + routes: description: |- - DeviceID is the device ID of a virtual machine's PCI, in integer. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - format: int32 - type: integer - vGPUProfile: - description: |- - VGPUProfile is the profile name of a virtual machine's vGPU, in string. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with DeviceID and VendorID as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - type: string - vendorId: - description: |- - VendorId is the vendor ID of a virtual machine's PCI, in integer. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - format: int32 - type: integer + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices type: object - type: array - powerOffMode: - default: hard - description: |- - PowerOffMode describes the desired behavior when powering off a VM. - - - There are three, supported power off modes: hard, soft, and - trySoft. The first mode, hard, is the equivalent of a physical - system's power cord being ripped from the wall. The soft mode - requires the VM's guest to have VM Tools installed and attempts to - gracefully shut down the VM. Its variant, trySoft, first attempts - a graceful shutdown, and if that fails or the VM is not in a powered off - state after reaching the GuestSoftPowerOffTimeout, the VM is halted. - - - If omitted, the mode defaults to hard. - enum: - - hard - - soft - - trySoft - type: string - providerID: - description: |- - ProviderID is the virtual machine's BIOS UUID formated as - vsphere://12345678-1234-1234-1234-123456789abc - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - tagIDs: - description: |- - TagIDs is an optional set of tags to add to an instance. Specified tagIDs - must use URN-notation instead of display names. - items: + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + providerID: + description: |- + ProviderID is the virtual machine's BIOS UUID formated as + vsphere://12345678-1234-1234-1234-123456789abc type: string - type: array - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: true - storage: true + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + required: + - spec + type: object + required: + - template + type: object + type: object + served: false + storage: false + - deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereMachineTemplate is the Schema for the vspheremachinetemplates API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate + properties: + template: + description: VSphereMachineTemplateResource describes the data needed + to create a VSphereMachine from a template + properties: + metadata: + description: |- + Standard object's metadata. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: http://kubernetes.io/docs/user-guide/annotations + type: object + labels: + additionalProperties: + type: string + description: |- + Map of string keys and values that can be used to organize and categorize + (scope and select) objects. May match selectors of replication controllers + and services. + More info: http://kubernetes.io/docs/user-guide/labels + type: object + type: object + spec: + description: Spec is the specification of the desired behavior + of the machine. + properties: + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. + type: string + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + failureDomain: + description: |- + FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. + For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. + type: string + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this + machine's VM. + properties: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP6 is false. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4 and DHCP6 are both false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission + Unit size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static + routes applied to the device. + items: + description: NetworkRouteSpec defines a static + network route. + properties: + metric: + description: Metric is the weight/priority + of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + required: + - networkName + type: object + type: array + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine + type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices + type: object + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + providerID: + description: |- + ProviderID is the virtual machine's BIOS UUID formated as + vsphere://12345678-1234-1234-1234-123456789abc + type: string + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + required: + - spec + type: object + required: + - template + type: object + type: object + served: false + storage: false + - name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereMachineTemplate is the Schema for the vspheremachinetemplates + API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate. + properties: + template: + description: VSphereMachineTemplateResource describes the data needed + to create a VSphereMachine from a template. + properties: + metadata: + description: |- + Standard object's metadata. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: http://kubernetes.io/docs/user-guide/annotations + type: object + labels: + additionalProperties: + type: string + description: |- + Map of string keys and values that can be used to organize and categorize + (scope and select) objects. May match selectors of replication controllers + and services. + More info: http://kubernetes.io/docs/user-guide/labels + type: object + type: object + spec: + description: Spec is the specification of the desired behavior + of the machine. + properties: + additionalDisksGiB: + description: |- + AdditionalDisksGiB holds the sizes of additional disks of the virtual machine, in GiB + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + items: + format: int32 + type: integer + type: array + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. + type: string + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + dataDisks: + description: DataDisks are additional disks to add to the + VM that are not part of the VM's OVA template. + items: + description: VSphereDisk is an additional disk to add to + the VM that is not part of the VM OVA template. + properties: + name: + description: |- + Name is used to identify the disk definition. Name is required and needs to be unique so that it can be used to + clearly identify purpose of the disk. + type: string + sizeGiB: + description: SizeGiB is the size of the disk in GiB. + format: int32 + type: integer + required: + - name + - sizeGiB + type: object + maxItems: 29 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. + Defaults to * which selects the default datacenter. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + failureDomain: + description: |- + FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. + For this infrastructure provider, the name is equivalent to the name of the VSphereDeploymentZone. + type: string + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + guestSoftPowerOffTimeout: + description: |- + GuestSoftPowerOffTimeout sets the wait timeout for shutdown in the VM guest. + The VM will be powered off forcibly after the timeout if the VM is still + up and running when the PowerOffMode is set to trySoft. + + This parameter only applies when the PowerOffMode is set to trySoft. + + If omitted, the timeout defaults to 5 minutes. + type: string + hardwareVersion: + description: |- + HardwareVersion is the hardware version of the virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Check the compatibility with the ESXi version before setting the value. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this + machine's VM. + properties: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + addressesFromPools: + description: |- + AddressesFromPools is a list of IPAddressPools that should be assigned + to IPAddressClaims. The machine's cloud-init metadata will be populated + with IPAddresses fulfilled by an IPAM provider. + items: + description: |- + TypedLocalObjectReference contains enough information to let you locate the + typed referenced object inside the same namespace. + 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 + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + type: array + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp4Overrides: + description: |- + DHCP4Overrides allows for the control over several DHCP behaviors. + Overrides will only be applied when the corresponding DHCP flag is set. + Only configured values will be sent, omitted values will default to + distribution defaults. + Dependent on support in the network stack for your distribution. + For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) + properties: + hostname: + description: |- + Hostname is the name which will be sent to the DHCP server instead of + the machine's hostname. + type: string + routeMetric: + description: |- + RouteMetric is used to prioritize routes for devices. A lower metric for + an interface will have a higher priority. + type: integer + sendHostname: + description: |- + SendHostname when `true`, the hostname of the machine will be sent to the + DHCP server. + type: boolean + useDNS: + description: |- + UseDNS when `true`, the DNS servers in the DHCP server will be used and + take precedence. + type: boolean + useDomains: + description: |- + UseDomains can take the values `true`, `false`, or `route`. When `true`, + the domain name from the DHCP server will be used as the DNS search + domain for this device. When `route`, the domain name from the DHCP + response will be used for routing DNS only, not for searching. + type: string + useHostname: + description: |- + UseHostname when `true`, the hostname from the DHCP server will be set + as the transient hostname of the machine. + type: boolean + useMTU: + description: |- + UseMTU when `true`, the MTU from the DHCP server will be set as the + MTU of the device. + type: boolean + useNTP: + description: |- + UseNTP when `true`, the NTP servers from the DHCP server will be used + by systemd-timesyncd and take precedence. + type: boolean + useRoutes: + description: |- + UseRoutes when `true`, the routes from the DHCP server will be installed + in the routing table. + type: string + type: object + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + dhcp6Overrides: + description: |- + DHCP6Overrides allows for the control over several DHCP behaviors. + Overrides will only be applied when the corresponding DHCP flag is set. + Only configured values will be sent, omitted values will default to + distribution defaults. + Dependent on support in the network stack for your distribution. + For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) + properties: + hostname: + description: |- + Hostname is the name which will be sent to the DHCP server instead of + the machine's hostname. + type: string + routeMetric: + description: |- + RouteMetric is used to prioritize routes for devices. A lower metric for + an interface will have a higher priority. + type: integer + sendHostname: + description: |- + SendHostname when `true`, the hostname of the machine will be sent to the + DHCP server. + type: boolean + useDNS: + description: |- + UseDNS when `true`, the DNS servers in the DHCP server will be used and + take precedence. + type: boolean + useDomains: + description: |- + UseDomains can take the values `true`, `false`, or `route`. When `true`, + the domain name from the DHCP server will be used as the DNS search + domain for this device. When `route`, the domain name from the DHCP + response will be used for routing DNS only, not for searching. + type: string + useHostname: + description: |- + UseHostname when `true`, the hostname from the DHCP server will be set + as the transient hostname of the machine. + type: boolean + useMTU: + description: |- + UseMTU when `true`, the MTU from the DHCP server will be set as the + MTU of the device. + type: boolean + useNTP: + description: |- + UseNTP when `true`, the NTP servers from the DHCP server will be used + by systemd-timesyncd and take precedence. + type: boolean + useRoutes: + description: |- + UseRoutes when `true`, the routes from the DHCP server will be installed + in the routing table. + type: string + type: object + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: Gateway4 is the IPv4 gateway used by + this device. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4, DHCP6 and SkipIPAllocation are false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission + Unit size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static + routes applied to the device. + items: + description: NetworkRouteSpec defines a static + network route. + properties: + metric: + description: Metric is the weight/priority + of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + skipIPAllocation: + description: |- + SkipIPAllocation allows the device to not have IP address or DHCP configured. + This is suitable for devices for which IP allocation is handled externally, eg. using Multus CNI. + If true, CAPV will not verify IP address allocation. + type: boolean + required: + - networkName + type: object + type: array + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine + + Deprecated: This field is going to be removed in a future release. + type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices + type: object + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + os: + description: |- + OS is the Operating System of the virtual machine + Defaults to Linux + type: string + pciDevices: + description: PciDevices is the list of pci devices used by + the virtual machine. + items: + description: PCIDeviceSpec defines virtual machine's PCI + configuration. + properties: + customLabel: + description: |- + CustomLabel is the hardware label of a virtual machine's PCI device. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + type: string + deviceId: + description: |- + DeviceID is the device ID of a virtual machine's PCI, in integer. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + format: int32 + type: integer + vGPUProfile: + description: |- + VGPUProfile is the profile name of a virtual machine's vGPU, in string. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with DeviceID and VendorID as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + type: string + vendorId: + description: |- + VendorId is the vendor ID of a virtual machine's PCI, in integer. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + format: int32 + type: integer + type: object + type: array + powerOffMode: + default: hard + description: |- + PowerOffMode describes the desired behavior when powering off a VM. + + There are three, supported power off modes: hard, soft, and + trySoft. The first mode, hard, is the equivalent of a physical + system's power cord being ripped from the wall. The soft mode + requires the VM's guest to have VM Tools installed and attempts to + gracefully shut down the VM. Its variant, trySoft, first attempts + a graceful shutdown, and if that fails or the VM is not in a powered off + state after reaching the GuestSoftPowerOffTimeout, the VM is halted. + + If omitted, the mode defaults to hard. + enum: + - hard + - soft + - trySoft + type: string + providerID: + description: |- + ProviderID is the virtual machine's BIOS UUID formated as + vsphere://12345678-1234-1234-1234-123456789abc + type: string + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + tagIDs: + description: |- + TagIDs is an optional set of tags to add to an instance. Specified tagIDs + must use URN-notation instead of display names. + items: + type: string + type: array + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + required: + - spec + type: object + required: + - template + type: object + type: object + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: capv-system/capv-serving-cert - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.16.3 labels: cluster.x-k8s.io/provider: infrastructure-vsphere cluster.x-k8s.io/v1beta1: v1beta1 @@ -5440,1720 +5430,1717 @@ spec: namespace: capv-system path: /convert conversionReviewVersions: - - v1 - - v1beta1 + - v1 + - v1beta1 group: infrastructure.cluster.x-k8s.io names: categories: - - cluster-api + - cluster-api kind: VSphereVM listKind: VSphereVMList plural: vspherevms singular: vspherevm scope: Namespaced versions: - - deprecated: true - name: v1alpha3 - schema: - openAPIV3Schema: - description: |- - VSphereVM is the Schema for the vspherevms API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereVMSpec defines the desired state of VSphereVM. - properties: - biosUUID: - description: |- - BiosUUID is the VM's BIOS UUID that is assigned at runtime after - the VM has been created. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - type: string - bootstrapRef: - description: |- - BootstrapRef is a reference to a bootstrap provider-specific resource - that holds configuration details. - This field is optional in case no bootstrap data is required to create - a VM. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - TODO: this design is not final and this field is subject to change in the future. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string - type: object - x-kubernetes-map-type: atomic - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + - deprecated: true + name: v1alpha3 + schema: + openAPIV3Schema: + description: |- + VSphereVM is the Schema for the vspherevms API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereVMSpec defines the desired state of VSphereVM. + properties: + biosUUID: + description: |- + BiosUUID is the VM's BIOS UUID that is assigned at runtime after + the VM has been created. + This field is required at runtime for other controllers that read + this CRD as unstructured data. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this machine's - VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: + bootstrapRef: + description: |- + BootstrapRef is a reference to a bootstrap provider-specific resource + that holds configuration details. + This field is optional in case no bootstrap data is required to create + a VM. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP6 is false. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4 and DHCP6 are both false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission Unit - size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static routes - applied to the device. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine - type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network route. - properties: - metric: - description: Metric is the weight/priority of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - status: - description: VSphereVMStatus defines the observed state of VSphereVM - properties: - addresses: - description: |- - Addresses is a list of the VM's IP addresses. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - items: + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: + description: |- + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string + type: object + x-kubernetes-map-type: atomic + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. type: string - type: array - cloneMode: - description: |- - CloneMode is the type of clone operation used to clone this VM. Since - LinkedMode is the default but fails gracefully if the source of the - clone has no snapshots, this field may be used to determine the actual - type of clone operation used to create this VM. - type: string - conditions: - description: Conditions defines current service state of the VSphereVM. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map type: object - type: array - failureMessage: - description: |- - FailureMessage will be set in the event that there is a terminal problem - reconciling the vspherevm and will contain a more verbose string suitable - for logging and human consumption. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the vm. - - - Any transient errors that occur during the reconciliation of vspherevms - can be added as events to the vspherevm object and/or logged in the - controller's output. - type: string - failureReason: - description: |- - FailureReason will be set in the event that there is a terminal problem - reconciling the vspherevm and will contain a succinct value suitable - for vm interpretation. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the vm. - - - Any transient errors that occur during the reconciliation of vspherevms - can be added as events to the vspherevm object and/or logged in the - controller's output. - type: string - network: - description: |- - Network returns the network status for each of the machine's configured - network interfaces. - items: - description: NetworkStatus provides information about one of a VM's - networks. - properties: - connected: - description: |- - Connected is a flag that indicates whether this network is currently - connected to the VM. - type: boolean - ipAddrs: - description: IPAddrs is one or more IP addresses reported by - vm-tools. - items: - type: string - type: array - macAddr: - description: MACAddr is the MAC address of the network device. - type: string - networkName: - description: NetworkName is the name of the network. - type: string - required: - - macAddr - type: object - type: array - ready: - description: |- - Ready is true when the provider resource is ready. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - type: boolean - retryAfter: - description: RetryAfter tracks the time we can retry queueing a task - format: date-time - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which the VM was cloned if - LinkedMode is enabled. - type: string - taskRef: - description: |- - TaskRef is a managed object reference to a Task related to the machine. - This value is set automatically at runtime and should not be set or - modified by users. - type: string - type: object - type: object - served: false - storage: false - subresources: - status: {} - - deprecated: true - name: v1alpha4 - schema: - openAPIV3Schema: - description: |- - VSphereVM is the Schema for the vspherevms API - - - Deprecated: This type will be removed in one of the next releases. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereVMSpec defines the desired state of VSphereVM. - properties: - biosUUID: - description: |- - BiosUUID is the VM's BIOS UUID that is assigned at runtime after - the VM has been created. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - type: string - bootstrapRef: - description: |- - BootstrapRef is a reference to a bootstrap provider-specific resource - that holds configuration details. - This field is optional in case no bootstrap data is required to create - a VM. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - TODO: this design is not final and this field is subject to change in the future. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string - type: object - x-kubernetes-map-type: atomic - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this machine's - VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP6 is false. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4 and DHCP6 are both false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission Unit - size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static routes - applied to the device. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine - type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network route. - properties: - metric: - description: Metric is the weight/priority of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - status: - description: VSphereVMStatus defines the observed state of VSphereVM - properties: - addresses: - description: |- - Addresses is a list of the VM's IP addresses. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - items: + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. type: string - type: array - cloneMode: - description: |- - CloneMode is the type of clone operation used to clone this VM. Since - LinkedMode is the default but fails gracefully if the source of the - clone has no snapshots, this field may be used to determine the actual - type of clone operation used to create this VM. - type: string - conditions: - description: Conditions defines current service state of the VSphereVM. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - status - - type - type: object - type: array - failureMessage: - description: |- - FailureMessage will be set in the event that there is a terminal problem - reconciling the vspherevm and will contain a more verbose string suitable - for logging and human consumption. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the vm. - - - Any transient errors that occur during the reconciliation of vspherevms - can be added as events to the vspherevm object and/or logged in the - controller's output. - type: string - failureReason: - description: |- - FailureReason will be set in the event that there is a terminal problem - reconciling the vspherevm and will contain a succinct value suitable - for vm interpretation. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the vm. - - - Any transient errors that occur during the reconciliation of vspherevms - can be added as events to the vspherevm object and/or logged in the - controller's output. - type: string - network: - description: |- - Network returns the network status for each of the machine's configured - network interfaces. - items: - description: NetworkStatus provides information about one of a VM's - networks. - properties: - connected: - description: |- - Connected is a flag that indicates whether this network is currently - connected to the VM. - type: boolean - ipAddrs: - description: IPAddrs is one or more IP addresses reported by - vm-tools. - items: - type: string - type: array - macAddr: - description: MACAddr is the MAC address of the network device. - type: string - networkName: - description: NetworkName is the name of the network. - type: string - required: - - macAddr - type: object - type: array - ready: - description: |- - Ready is true when the provider resource is ready. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - type: boolean - retryAfter: - description: RetryAfter tracks the time we can retry queueing a task - format: date-time - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which the VM was cloned if - LinkedMode is enabled. - type: string - taskRef: - description: |- - TaskRef is a managed object reference to a Task related to the machine. - This value is set automatically at runtime and should not be set or - modified by users. - type: string - type: object - type: object - served: false - storage: false - subresources: - status: {} - - name: v1beta1 - schema: - openAPIV3Schema: - description: VSphereVM is the Schema for the vspherevms API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: VSphereVMSpec defines the desired state of VSphereVM. - properties: - additionalDisksGiB: - description: |- - AdditionalDisksGiB holds the sizes of additional disks of the virtual machine, in GiB - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - items: + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. format: int32 type: integer - type: array - biosUUID: - description: |- - BiosUUID is the VM's BIOS UUID that is assigned at runtime after - the VM has been created. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - type: string - bootstrapRef: - description: |- - BootstrapRef is a reference to a bootstrap provider-specific resource - that holds configuration details. - This field is optional in case no bootstrap data is required to create - a VM. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - TODO: this design is not final and this field is subject to change in the future. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string - type: object - x-kubernetes-map-type: atomic - cloneMode: - description: |- - CloneMode specifies the type of clone operation. - The LinkedClone mode is only support for templates that have at least - one snapshot. If the template has no snapshots, then CloneMode defaults - to FullClone. - When LinkedClone mode is enabled the DiskGiB field is ignored as it is - not possible to expand disks of linked clones. - Defaults to LinkedClone, but fails gracefully to FullClone if the source - of the clone operation has no snapshots. - type: string - customVMXKeys: - additionalProperties: + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. type: string - description: |- - CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM - Defaults to empty map - type: object - datacenter: - description: |- - Datacenter is the name or inventory path of the datacenter in which the - virtual machine is created/located. - Defaults to * which selects the default datacenter. - type: string - datastore: - description: |- - Datastore is the name or inventory path of the datastore in which the - virtual machine is created/located. - type: string - diskGiB: - description: |- - DiskGiB is the size of a virtual machine's disk, in GiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - folder: - description: |- - Folder is the name or inventory path of the folder in which the - virtual machine is created/located. - type: string - guestSoftPowerOffTimeout: - description: |- - GuestSoftPowerOffTimeout sets the wait timeout for shutdown in the VM guest. - The VM will be powered off forcibly after the timeout if the VM is still - up and running when the PowerOffMode is set to trySoft. - - - This parameter only applies when the PowerOffMode is set to trySoft. - - - If omitted, the timeout defaults to 5 minutes. - type: string - hardwareVersion: - description: |- - HardwareVersion is the hardware version of the virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Check the compatibility with the ESXi version before setting the value. - type: string - memoryMiB: - description: |- - MemoryMiB is the size of a virtual machine's memory, in MiB. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int64 - type: integer - network: - description: Network is the network configuration for this machine's - VM. - properties: - devices: - description: |- - Devices is the list of network devices used by the virtual machine. - TODO(akutz) Make sure at least one network matches the - ClusterSpec.CloudProviderConfiguration.Network.Name - items: - description: |- - NetworkDeviceSpec defines the network configuration for a virtual machine's - network device. - properties: - addressesFromPools: - description: |- - AddressesFromPools is a list of IPAddressPools that should be assigned - to IPAddressClaims. The machine's cloud-init metadata will be populated - with IPAddresses fulfilled by an IPAM provider. - items: - description: |- - TypedLocalObjectReference contains enough information to let you locate the - typed referenced object inside the same namespace. - 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 - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - type: array - deviceName: - description: |- - DeviceName may be used to explicitly assign a name to the network device - as it exists in the guest operating system. - type: string - dhcp4: - description: |- - DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 - on this device. - If true then IPAddrs should not contain any IPv4 addresses. - type: boolean - dhcp4Overrides: - description: |- - DHCP4Overrides allows for the control over several DHCP behaviors. - Overrides will only be applied when the corresponding DHCP flag is set. - Only configured values will be sent, omitted values will default to - distribution defaults. - Dependent on support in the network stack for your distribution. - For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) - properties: - hostname: - description: |- - Hostname is the name which will be sent to the DHCP server instead of - the machine's hostname. - type: string - routeMetric: - description: |- - RouteMetric is used to prioritize routes for devices. A lower metric for - an interface will have a higher priority. - type: integer - sendHostname: - description: |- - SendHostname when `true`, the hostname of the machine will be sent to the - DHCP server. - type: boolean - useDNS: - description: |- - UseDNS when `true`, the DNS servers in the DHCP server will be used and - take precedence. - type: boolean - useDomains: - description: |- - UseDomains can take the values `true`, `false`, or `route`. When `true`, - the domain name from the DHCP server will be used as the DNS search - domain for this device. When `route`, the domain name from the DHCP - response will be used for routing DNS only, not for searching. - type: string - useHostname: - description: |- - UseHostname when `true`, the hostname from the DHCP server will be set - as the transient hostname of the machine. - type: boolean - useMTU: - description: |- - UseMTU when `true`, the MTU from the DHCP server will be set as the - MTU of the device. - type: boolean - useNTP: - description: |- - UseNTP when `true`, the NTP servers from the DHCP server will be used - by systemd-timesyncd and take precedence. - type: boolean - useRoutes: - description: |- - UseRoutes when `true`, the routes from the DHCP server will be installed - in the routing table. - type: string - type: object - dhcp6: - description: |- - DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 - on this device. - If true then IPAddrs should not contain any IPv6 addresses. - type: boolean - dhcp6Overrides: - description: |- - DHCP6Overrides allows for the control over several DHCP behaviors. - Overrides will only be applied when the corresponding DHCP flag is set. - Only configured values will be sent, omitted values will default to - distribution defaults. - Dependent on support in the network stack for your distribution. - For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) - properties: - hostname: - description: |- - Hostname is the name which will be sent to the DHCP server instead of - the machine's hostname. - type: string - routeMetric: - description: |- - RouteMetric is used to prioritize routes for devices. A lower metric for - an interface will have a higher priority. - type: integer - sendHostname: - description: |- - SendHostname when `true`, the hostname of the machine will be sent to the - DHCP server. - type: boolean - useDNS: - description: |- - UseDNS when `true`, the DNS servers in the DHCP server will be used and - take precedence. - type: boolean - useDomains: - description: |- - UseDomains can take the values `true`, `false`, or `route`. When `true`, - the domain name from the DHCP server will be used as the DNS search - domain for this device. When `route`, the domain name from the DHCP - response will be used for routing DNS only, not for searching. - type: string - useHostname: - description: |- - UseHostname when `true`, the hostname from the DHCP server will be set - as the transient hostname of the machine. - type: boolean - useMTU: - description: |- - UseMTU when `true`, the MTU from the DHCP server will be set as the - MTU of the device. - type: boolean - useNTP: - description: |- - UseNTP when `true`, the NTP servers from the DHCP server will be used - by systemd-timesyncd and take precedence. - type: boolean - useRoutes: - description: |- - UseRoutes when `true`, the routes from the DHCP server will be installed - in the routing table. - type: string - type: object - gateway4: - description: |- - Gateway4 is the IPv4 gateway used by this device. - Required when DHCP4 is false. - type: string - gateway6: - description: Gateway4 is the IPv4 gateway used by this device. - type: string - ipAddrs: - description: |- - IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign - to this device. IP addresses must also specify the segment length in - CIDR notation. - Required when DHCP4, DHCP6 and SkipIPAllocation are false. - items: - type: string - type: array - macAddr: - description: |- - MACAddr is the MAC address used by this device. - It is generally a good idea to omit this field and allow a MAC address - to be generated. - Please note that this value must use the VMware OUI to work with the - in-tree vSphere cloud provider. - type: string - mtu: - description: MTU is the device’s Maximum Transmission Unit - size in bytes. - format: int64 - type: integer - nameservers: - description: |- - Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS - nameservers. - Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). - items: - type: string - type: array - networkName: - description: |- - NetworkName is the name of the vSphere network to which the device - will be connected. - type: string - routes: - description: Routes is a list of optional, static routes - applied to the device. - items: - description: NetworkRouteSpec defines a static network - route. - properties: - metric: - description: Metric is the weight/priority of the - route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - searchDomains: - description: |- - SearchDomains is a list of search domains used when resolving IP - addresses with DNS. - items: - type: string - type: array - skipIPAllocation: - description: |- - SkipIPAllocation allows the device to not have IP address or DHCP configured. - This is suitable for devices for which IP allocation is handled externally, eg. using Multus CNI. - If true, CAPV will not verify IP address allocation. - type: boolean - required: - - networkName - type: object - type: array - preferredAPIServerCidr: - description: |- - PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API - server endpoint on this machine - - - Deprecated: This field is going to be removed in a future release. - type: string - routes: - description: |- - Routes is a list of optional, static routes applied to the virtual - machine. - items: - description: NetworkRouteSpec defines a static network route. - properties: - metric: - description: Metric is the weight/priority of the route. - format: int32 - type: integer - to: - description: To is an IPv4 or IPv6 address. - type: string - via: - description: Via is an IPv4 or IPv6 address. - type: string - required: - - metric - - to - - via - type: object - type: array - required: - - devices - type: object - numCPUs: - description: |- - NumCPUs is the number of virtual processors in a virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - numCoresPerSocket: - description: |- - NumCPUs is the number of cores among which to distribute CPUs in this - virtual machine. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - format: int32 - type: integer - os: - description: |- - OS is the Operating System of the virtual machine - Defaults to Linux - type: string - pciDevices: - description: PciDevices is the list of pci devices used by the virtual - machine. - items: - description: PCIDeviceSpec defines virtual machine's PCI configuration. + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this machine's + VM. properties: - customLabel: - description: |- - CustomLabel is the hardware label of a virtual machine's PCI device. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - type: string - deviceId: - description: |- - DeviceID is the device ID of a virtual machine's PCI, in integer. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - format: int32 - type: integer - vGPUProfile: - description: |- - VGPUProfile is the profile name of a virtual machine's vGPU, in string. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with DeviceID and VendorID as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - type: string - vendorId: - description: |- - VendorId is the vendor ID of a virtual machine's PCI, in integer. - Defaults to the eponymous property value in the template from which the - virtual machine is cloned. - Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID - are two independent ways to define PCI devices. - format: int32 - type: integer - type: object - type: array - powerOffMode: - default: hard - description: |- - PowerOffMode describes the desired behavior when powering off a VM. - - - There are three, supported power off modes: hard, soft, and - trySoft. The first mode, hard, is the equivalent of a physical - system's power cord being ripped from the wall. The soft mode - requires the VM's guest to have VM Tools installed and attempts to - gracefully shut down the VM. Its variant, trySoft, first attempts - a graceful shutdown, and if that fails or the VM is not in a powered off - state after reaching the GuestSoftPowerOffTimeout, the VM is halted. - - - If omitted, the mode defaults to hard. - enum: - - hard - - soft - - trySoft - type: string - resourcePool: - description: |- - ResourcePool is the name or inventory path of the resource pool in which - the virtual machine is created/located. - type: string - server: - description: |- - Server is the IP address or FQDN of the vSphere server on which - the virtual machine is created/located. - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which to create a linked clone. - This field is ignored if LinkedClone is not enabled. - Defaults to the source's current snapshot. - type: string - storagePolicyName: - description: |- - StoragePolicyName of the storage policy to use with this - Virtual Machine - type: string - tagIDs: - description: |- - TagIDs is an optional set of tags to add to an instance. Specified tagIDs - must use URN-notation instead of display names. - items: - type: string - type: array - template: - description: |- - Template is the name or inventory path of the template used to clone - the virtual machine. - minLength: 1 - type: string - thumbprint: - description: |- - Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate - When this is set to empty, this VirtualMachine would be created - without TLS certificate validation of the communication between Cluster API Provider vSphere - and the VMware vCenter server. - type: string - required: - - network - - template - type: object - status: - description: VSphereVMStatus defines the observed state of VSphereVM. - properties: - addresses: - description: |- - Addresses is a list of the VM's IP addresses. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - items: - type: string - type: array - cloneMode: - description: |- - CloneMode is the type of clone operation used to clone this VM. Since - LinkedMode is the default but fails gracefully if the source of the - clone has no snapshots, this field may be used to determine the actual - type of clone operation used to create this VM. - type: string - conditions: - description: Conditions defines current service state of the VSphereVM. - items: - description: Condition defines an observation of a Cluster API resource - operational state. - properties: - lastTransitionTime: - description: |- - Last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when - the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - A human readable message indicating details about the transition. - This field may be empty. - type: string - reason: - description: |- - The reason for the condition's last transition in CamelCase. - The specific API may choose whether or not this field is considered a guaranteed API. - This field may not be empty. - type: string - severity: - description: |- - Severity provides an explicit classification of Reason code, so the users or machines can immediately - understand the current situation and act accordingly. - The Severity field MUST be set only when Status=False. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: |- - Type of condition in CamelCase or in foo.example.com/CamelCase. - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability to deconflict is important. - type: string - required: - - lastTransitionTime - - status - - type - type: object - type: array - failureMessage: - description: |- - FailureMessage will be set in the event that there is a terminal problem - reconciling the vspherevm and will contain a more verbose string suitable - for logging and human consumption. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the vm. - - - Any transient errors that occur during the reconciliation of vspherevms - can be added as events to the vspherevm object and/or logged in the - controller's output. - type: string - failureReason: - description: |- - FailureReason will be set in the event that there is a terminal problem - reconciling the vspherevm and will contain a succinct value suitable - for vm interpretation. - - - This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over - time (like service outages), but instead indicate that something is - fundamentally wrong with the vm. - - - Any transient errors that occur during the reconciliation of vspherevms - can be added as events to the vspherevm object and/or logged in the - controller's output. - type: string - host: - description: |- - Host describes the hostname or IP address of the infrastructure host - that the VSphereVM is residing on. - type: string - moduleUUID: - description: |- - ModuleUUID is the unique identifier for the vCenter cluster module construct - which is used to configure anti-affinity. Objects with the same ModuleUUID - will be anti-affined, meaning that the vCenter DRS will best effort schedule - the VMs on separate hosts. - type: string - network: - description: |- - Network returns the network status for each of the machine's configured - network interfaces. - items: - description: NetworkStatus provides information about one of a VM's - networks. - properties: - connected: - description: |- - Connected is a flag that indicates whether this network is currently - connected to the VM. - type: boolean - ipAddrs: - description: IPAddrs is one or more IP addresses reported by - vm-tools. + devices: + description: | + Devices is the list of network devices used by the virtual machine. items: - type: string + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP6 is false. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4 and DHCP6 are both false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission Unit + size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static routes + applied to the device. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + required: + - networkName + type: object type: array - macAddr: - description: MACAddr is the MAC address of the network device. - type: string - networkName: - description: NetworkName is the name of the network. + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network route. + properties: + metric: + description: Metric is the weight/priority of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array required: - - macAddr + - devices type: object - type: array - ready: - description: |- - Ready is true when the provider resource is ready. - This field is required at runtime for other controllers that read - this CRD as unstructured data. - type: boolean - retryAfter: - description: RetryAfter tracks the time we can retry queueing a task - format: date-time - type: string - snapshot: - description: |- - Snapshot is the name of the snapshot from which the VM was cloned if - LinkedMode is enabled. - type: string - taskRef: - description: |- - TaskRef is a managed object reference to a Task related to the machine. - This value is set automatically at runtime and should not be set or - modified by users. - type: string - vmRef: - description: |- - VMRef is the VM's Managed Object Reference on vSphere. It can be used by consumers - to programatically get this VM representation on vSphere in case of the need to retrieve informations. - This field is set once the machine is created and should not be changed - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + status: + description: VSphereVMStatus defines the observed state of VSphereVM + properties: + addresses: + description: |- + Addresses is a list of the VM's IP addresses. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + items: + type: string + type: array + cloneMode: + description: |- + CloneMode is the type of clone operation used to clone this VM. Since + LinkedMode is the default but fails gracefully if the source of the + clone has no snapshots, this field may be used to determine the actual + type of clone operation used to create this VM. + type: string + conditions: + description: Conditions defines current service state of the VSphereVM. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + failureMessage: + description: |- + FailureMessage will be set in the event that there is a terminal problem + reconciling the vspherevm and will contain a more verbose string suitable + for logging and human consumption. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the vm. + + Any transient errors that occur during the reconciliation of vspherevms + can be added as events to the vspherevm object and/or logged in the + controller's output. + type: string + failureReason: + description: |- + FailureReason will be set in the event that there is a terminal problem + reconciling the vspherevm and will contain a succinct value suitable + for vm interpretation. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the vm. + + Any transient errors that occur during the reconciliation of vspherevms + can be added as events to the vspherevm object and/or logged in the + controller's output. + type: string + network: + description: |- + Network returns the network status for each of the machine's configured + network interfaces. + items: + description: NetworkStatus provides information about one of a VM's + networks. + properties: + connected: + description: |- + Connected is a flag that indicates whether this network is currently + connected to the VM. + type: boolean + ipAddrs: + description: IPAddrs is one or more IP addresses reported by + vm-tools. + items: + type: string + type: array + macAddr: + description: MACAddr is the MAC address of the network device. + type: string + networkName: + description: NetworkName is the name of the network. + type: string + required: + - macAddr + type: object + type: array + ready: + description: |- + Ready is true when the provider resource is ready. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + type: boolean + retryAfter: + description: RetryAfter tracks the time we can retry queueing a task + format: date-time + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which the VM was cloned if + LinkedMode is enabled. + type: string + taskRef: + description: |- + TaskRef is a managed object reference to a Task related to the machine. + This value is set automatically at runtime and should not be set or + modified by users. + type: string + type: object + type: object + served: false + storage: false + subresources: + status: {} + - deprecated: true + name: v1alpha4 + schema: + openAPIV3Schema: + description: |- + VSphereVM is the Schema for the vspherevms API + + Deprecated: This type will be removed in one of the next releases. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereVMSpec defines the desired state of VSphereVM. + properties: + biosUUID: + description: |- + BiosUUID is the VM's BIOS UUID that is assigned at runtime after + the VM has been created. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + type: string + bootstrapRef: + description: |- + BootstrapRef is a reference to a bootstrap provider-specific resource + that holds configuration details. + This field is optional in case no bootstrap data is required to create + a VM. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: + description: |- + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string + type: object + x-kubernetes-map-type: atomic + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. + type: string + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this machine's + VM. + properties: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP6 is false. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4 and DHCP6 are both false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission Unit + size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static routes + applied to the device. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + required: + - networkName + type: object + type: array + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine + type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network route. + properties: + metric: + description: Metric is the weight/priority of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices + type: object + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + status: + description: VSphereVMStatus defines the observed state of VSphereVM + properties: + addresses: + description: |- + Addresses is a list of the VM's IP addresses. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + items: + type: string + type: array + cloneMode: + description: |- + CloneMode is the type of clone operation used to clone this VM. Since + LinkedMode is the default but fails gracefully if the source of the + clone has no snapshots, this field may be used to determine the actual + type of clone operation used to create this VM. + type: string + conditions: + description: Conditions defines current service state of the VSphereVM. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may not be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - status + - type + type: object + type: array + failureMessage: + description: |- + FailureMessage will be set in the event that there is a terminal problem + reconciling the vspherevm and will contain a more verbose string suitable + for logging and human consumption. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the vm. + + Any transient errors that occur during the reconciliation of vspherevms + can be added as events to the vspherevm object and/or logged in the + controller's output. + type: string + failureReason: + description: |- + FailureReason will be set in the event that there is a terminal problem + reconciling the vspherevm and will contain a succinct value suitable + for vm interpretation. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the vm. + + Any transient errors that occur during the reconciliation of vspherevms + can be added as events to the vspherevm object and/or logged in the + controller's output. + type: string + network: + description: |- + Network returns the network status for each of the machine's configured + network interfaces. + items: + description: NetworkStatus provides information about one of a VM's + networks. + properties: + connected: + description: |- + Connected is a flag that indicates whether this network is currently + connected to the VM. + type: boolean + ipAddrs: + description: IPAddrs is one or more IP addresses reported by + vm-tools. + items: + type: string + type: array + macAddr: + description: MACAddr is the MAC address of the network device. + type: string + networkName: + description: NetworkName is the name of the network. + type: string + required: + - macAddr + type: object + type: array + ready: + description: |- + Ready is true when the provider resource is ready. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + type: boolean + retryAfter: + description: RetryAfter tracks the time we can retry queueing a task + format: date-time + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which the VM was cloned if + LinkedMode is enabled. + type: string + taskRef: + description: |- + TaskRef is a managed object reference to a Task related to the machine. + This value is set automatically at runtime and should not be set or + modified by users. + type: string + type: object + type: object + served: false + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: VSphereVM is the Schema for the vspherevms API. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: VSphereVMSpec defines the desired state of VSphereVM. + properties: + additionalDisksGiB: + description: |- + AdditionalDisksGiB holds the sizes of additional disks of the virtual machine, in GiB + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + items: + format: int32 + type: integer + type: array + biosUUID: + description: |- + BiosUUID is the VM's BIOS UUID that is assigned at runtime after + the VM has been created. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + type: string + bootstrapRef: + description: |- + BootstrapRef is a reference to a bootstrap provider-specific resource + that holds configuration details. + This field is optional in case no bootstrap data is required to create + a VM. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: + description: |- + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string + type: object + x-kubernetes-map-type: atomic + cloneMode: + description: |- + CloneMode specifies the type of clone operation. + The LinkedClone mode is only support for templates that have at least + one snapshot. If the template has no snapshots, then CloneMode defaults + to FullClone. + When LinkedClone mode is enabled the DiskGiB field is ignored as it is + not possible to expand disks of linked clones. + Defaults to LinkedClone, but fails gracefully to FullClone if the source + of the clone operation has no snapshots. + type: string + customVMXKeys: + additionalProperties: + type: string + description: |- + CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM + Defaults to empty map + type: object + dataDisks: + description: DataDisks are additional disks to add to the VM that + are not part of the VM's OVA template. + items: + description: VSphereDisk is an additional disk to add to the VM + that is not part of the VM OVA template. + properties: + name: + description: |- + Name is used to identify the disk definition. Name is required and needs to be unique so that it can be used to + clearly identify purpose of the disk. + type: string + sizeGiB: + description: SizeGiB is the size of the disk in GiB. + format: int32 + type: integer + required: + - name + - sizeGiB + type: object + maxItems: 29 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + datacenter: + description: |- + Datacenter is the name or inventory path of the datacenter in which the + virtual machine is created/located. + Defaults to * which selects the default datacenter. + type: string + datastore: + description: |- + Datastore is the name or inventory path of the datastore in which the + virtual machine is created/located. + type: string + diskGiB: + description: |- + DiskGiB is the size of a virtual machine's disk, in GiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + folder: + description: |- + Folder is the name or inventory path of the folder in which the + virtual machine is created/located. + type: string + guestSoftPowerOffTimeout: + description: |- + GuestSoftPowerOffTimeout sets the wait timeout for shutdown in the VM guest. + The VM will be powered off forcibly after the timeout if the VM is still + up and running when the PowerOffMode is set to trySoft. + + This parameter only applies when the PowerOffMode is set to trySoft. + + If omitted, the timeout defaults to 5 minutes. + type: string + hardwareVersion: + description: |- + HardwareVersion is the hardware version of the virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Check the compatibility with the ESXi version before setting the value. + type: string + memoryMiB: + description: |- + MemoryMiB is the size of a virtual machine's memory, in MiB. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int64 + type: integer + network: + description: Network is the network configuration for this machine's + VM. + properties: + devices: + description: | + Devices is the list of network devices used by the virtual machine. + items: + description: |- + NetworkDeviceSpec defines the network configuration for a virtual machine's + network device. + properties: + addressesFromPools: + description: |- + AddressesFromPools is a list of IPAddressPools that should be assigned + to IPAddressClaims. The machine's cloud-init metadata will be populated + with IPAddresses fulfilled by an IPAM provider. + items: + description: |- + TypedLocalObjectReference contains enough information to let you locate the + typed referenced object inside the same namespace. + 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 + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + type: array + deviceName: + description: |- + DeviceName may be used to explicitly assign a name to the network device + as it exists in the guest operating system. + type: string + dhcp4: + description: |- + DHCP4 is a flag that indicates whether or not to use DHCP for IPv4 + on this device. + If true then IPAddrs should not contain any IPv4 addresses. + type: boolean + dhcp4Overrides: + description: |- + DHCP4Overrides allows for the control over several DHCP behaviors. + Overrides will only be applied when the corresponding DHCP flag is set. + Only configured values will be sent, omitted values will default to + distribution defaults. + Dependent on support in the network stack for your distribution. + For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) + properties: + hostname: + description: |- + Hostname is the name which will be sent to the DHCP server instead of + the machine's hostname. + type: string + routeMetric: + description: |- + RouteMetric is used to prioritize routes for devices. A lower metric for + an interface will have a higher priority. + type: integer + sendHostname: + description: |- + SendHostname when `true`, the hostname of the machine will be sent to the + DHCP server. + type: boolean + useDNS: + description: |- + UseDNS when `true`, the DNS servers in the DHCP server will be used and + take precedence. + type: boolean + useDomains: + description: |- + UseDomains can take the values `true`, `false`, or `route`. When `true`, + the domain name from the DHCP server will be used as the DNS search + domain for this device. When `route`, the domain name from the DHCP + response will be used for routing DNS only, not for searching. + type: string + useHostname: + description: |- + UseHostname when `true`, the hostname from the DHCP server will be set + as the transient hostname of the machine. + type: boolean + useMTU: + description: |- + UseMTU when `true`, the MTU from the DHCP server will be set as the + MTU of the device. + type: boolean + useNTP: + description: |- + UseNTP when `true`, the NTP servers from the DHCP server will be used + by systemd-timesyncd and take precedence. + type: boolean + useRoutes: + description: |- + UseRoutes when `true`, the routes from the DHCP server will be installed + in the routing table. + type: string + type: object + dhcp6: + description: |- + DHCP6 is a flag that indicates whether or not to use DHCP for IPv6 + on this device. + If true then IPAddrs should not contain any IPv6 addresses. + type: boolean + dhcp6Overrides: + description: |- + DHCP6Overrides allows for the control over several DHCP behaviors. + Overrides will only be applied when the corresponding DHCP flag is set. + Only configured values will be sent, omitted values will default to + distribution defaults. + Dependent on support in the network stack for your distribution. + For more information see the netplan reference (https://netplan.io/reference#dhcp-overrides) + properties: + hostname: + description: |- + Hostname is the name which will be sent to the DHCP server instead of + the machine's hostname. + type: string + routeMetric: + description: |- + RouteMetric is used to prioritize routes for devices. A lower metric for + an interface will have a higher priority. + type: integer + sendHostname: + description: |- + SendHostname when `true`, the hostname of the machine will be sent to the + DHCP server. + type: boolean + useDNS: + description: |- + UseDNS when `true`, the DNS servers in the DHCP server will be used and + take precedence. + type: boolean + useDomains: + description: |- + UseDomains can take the values `true`, `false`, or `route`. When `true`, + the domain name from the DHCP server will be used as the DNS search + domain for this device. When `route`, the domain name from the DHCP + response will be used for routing DNS only, not for searching. + type: string + useHostname: + description: |- + UseHostname when `true`, the hostname from the DHCP server will be set + as the transient hostname of the machine. + type: boolean + useMTU: + description: |- + UseMTU when `true`, the MTU from the DHCP server will be set as the + MTU of the device. + type: boolean + useNTP: + description: |- + UseNTP when `true`, the NTP servers from the DHCP server will be used + by systemd-timesyncd and take precedence. + type: boolean + useRoutes: + description: |- + UseRoutes when `true`, the routes from the DHCP server will be installed + in the routing table. + type: string + type: object + gateway4: + description: |- + Gateway4 is the IPv4 gateway used by this device. + Required when DHCP4 is false. + type: string + gateway6: + description: Gateway4 is the IPv4 gateway used by this device. + type: string + ipAddrs: + description: |- + IPAddrs is a list of one or more IPv4 and/or IPv6 addresses to assign + to this device. IP addresses must also specify the segment length in + CIDR notation. + Required when DHCP4, DHCP6 and SkipIPAllocation are false. + items: + type: string + type: array + macAddr: + description: |- + MACAddr is the MAC address used by this device. + It is generally a good idea to omit this field and allow a MAC address + to be generated. + Please note that this value must use the VMware OUI to work with the + in-tree vSphere cloud provider. + type: string + mtu: + description: MTU is the device’s Maximum Transmission Unit + size in bytes. + format: int64 + type: integer + nameservers: + description: |- + Nameservers is a list of IPv4 and/or IPv6 addresses used as DNS + nameservers. + Please note that Linux allows only three nameservers (https://linux.die.net/man/5/resolv.conf). + items: + type: string + type: array + networkName: + description: |- + NetworkName is the name of the vSphere network to which the device + will be connected. + type: string + routes: + description: Routes is a list of optional, static routes + applied to the device. + items: + description: NetworkRouteSpec defines a static network + route. + properties: + metric: + description: Metric is the weight/priority of the + route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + searchDomains: + description: |- + SearchDomains is a list of search domains used when resolving IP + addresses with DNS. + items: + type: string + type: array + skipIPAllocation: + description: |- + SkipIPAllocation allows the device to not have IP address or DHCP configured. + This is suitable for devices for which IP allocation is handled externally, eg. using Multus CNI. + If true, CAPV will not verify IP address allocation. + type: boolean + required: + - networkName + type: object + type: array + preferredAPIServerCidr: + description: |- + PreferredAPIServeCIDR is the preferred CIDR for the Kubernetes API + server endpoint on this machine + + Deprecated: This field is going to be removed in a future release. + type: string + routes: + description: |- + Routes is a list of optional, static routes applied to the virtual + machine. + items: + description: NetworkRouteSpec defines a static network route. + properties: + metric: + description: Metric is the weight/priority of the route. + format: int32 + type: integer + to: + description: To is an IPv4 or IPv6 address. + type: string + via: + description: Via is an IPv4 or IPv6 address. + type: string + required: + - metric + - to + - via + type: object + type: array + required: + - devices + type: object + numCPUs: + description: |- + NumCPUs is the number of virtual processors in a virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + numCoresPerSocket: + description: |- + NumCPUs is the number of cores among which to distribute CPUs in this + virtual machine. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + format: int32 + type: integer + os: + description: |- + OS is the Operating System of the virtual machine + Defaults to Linux + type: string + pciDevices: + description: PciDevices is the list of pci devices used by the virtual + machine. + items: + description: PCIDeviceSpec defines virtual machine's PCI configuration. + properties: + customLabel: + description: |- + CustomLabel is the hardware label of a virtual machine's PCI device. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + type: string + deviceId: + description: |- + DeviceID is the device ID of a virtual machine's PCI, in integer. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + format: int32 + type: integer + vGPUProfile: + description: |- + VGPUProfile is the profile name of a virtual machine's vGPU, in string. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with DeviceID and VendorID as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + type: string + vendorId: + description: |- + VendorId is the vendor ID of a virtual machine's PCI, in integer. + Defaults to the eponymous property value in the template from which the + virtual machine is cloned. + Mutually exclusive with VGPUProfile as VGPUProfile and DeviceID + VendorID + are two independent ways to define PCI devices. + format: int32 + type: integer + type: object + type: array + powerOffMode: + default: hard + description: |- + PowerOffMode describes the desired behavior when powering off a VM. + + There are three, supported power off modes: hard, soft, and + trySoft. The first mode, hard, is the equivalent of a physical + system's power cord being ripped from the wall. The soft mode + requires the VM's guest to have VM Tools installed and attempts to + gracefully shut down the VM. Its variant, trySoft, first attempts + a graceful shutdown, and if that fails or the VM is not in a powered off + state after reaching the GuestSoftPowerOffTimeout, the VM is halted. + + If omitted, the mode defaults to hard. + enum: + - hard + - soft + - trySoft + type: string + resourcePool: + description: |- + ResourcePool is the name or inventory path of the resource pool in which + the virtual machine is created/located. + type: string + server: + description: |- + Server is the IP address or FQDN of the vSphere server on which + the virtual machine is created/located. + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which to create a linked clone. + This field is ignored if LinkedClone is not enabled. + Defaults to the source's current snapshot. + type: string + storagePolicyName: + description: |- + StoragePolicyName of the storage policy to use with this + Virtual Machine + type: string + tagIDs: + description: |- + TagIDs is an optional set of tags to add to an instance. Specified tagIDs + must use URN-notation instead of display names. + items: + type: string + type: array + template: + description: |- + Template is the name or inventory path of the template used to clone + the virtual machine. + minLength: 1 + type: string + thumbprint: + description: |- + Thumbprint is the colon-separated SHA-1 checksum of the given vCenter server's host certificate + When this is set to empty, this VirtualMachine would be created + without TLS certificate validation of the communication between Cluster API Provider vSphere + and the VMware vCenter server. + type: string + required: + - network + - template + type: object + status: + description: VSphereVMStatus defines the observed state of VSphereVM. + properties: + addresses: + description: |- + Addresses is a list of the VM's IP addresses. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + items: + type: string + type: array + cloneMode: + description: |- + CloneMode is the type of clone operation used to clone this VM. Since + LinkedMode is the default but fails gracefully if the source of the + clone has no snapshots, this field may be used to determine the actual + type of clone operation used to create this VM. + type: string + conditions: + description: Conditions defines current service state of the VSphereVM. + items: + description: Condition defines an observation of a Cluster API resource + operational state. + properties: + lastTransitionTime: + description: |- + Last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when + the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + A human readable message indicating details about the transition. + This field may be empty. + type: string + reason: + description: |- + The reason for the condition's last transition in CamelCase. + The specific API may choose whether or not this field is considered a guaranteed API. + This field may be empty. + type: string + severity: + description: |- + Severity provides an explicit classification of Reason code, so the users or machines can immediately + understand the current situation and act accordingly. + The Severity field MUST be set only when Status=False. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: |- + Type of condition in CamelCase or in foo.example.com/CamelCase. + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability to deconflict is important. + type: string + required: + - lastTransitionTime + - status + - type + type: object + type: array + failureMessage: + description: |- + FailureMessage will be set in the event that there is a terminal problem + reconciling the vspherevm and will contain a more verbose string suitable + for logging and human consumption. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the vm. + + Any transient errors that occur during the reconciliation of vspherevms + can be added as events to the vspherevm object and/or logged in the + controller's output. + type: string + failureReason: + description: |- + FailureReason will be set in the event that there is a terminal problem + reconciling the vspherevm and will contain a succinct value suitable + for vm interpretation. + + This field should not be set for transitive errors that a controller + faces that are expected to be fixed automatically over + time (like service outages), but instead indicate that something is + fundamentally wrong with the vm. + + Any transient errors that occur during the reconciliation of vspherevms + can be added as events to the vspherevm object and/or logged in the + controller's output. + type: string + host: + description: |- + Host describes the hostname or IP address of the infrastructure host + that the VSphereVM is residing on. + type: string + moduleUUID: + description: |- + ModuleUUID is the unique identifier for the vCenter cluster module construct + which is used to configure anti-affinity. Objects with the same ModuleUUID + will be anti-affined, meaning that the vCenter DRS will best effort schedule + the VMs on separate hosts. + type: string + network: + description: |- + Network returns the network status for each of the machine's configured + network interfaces. + items: + description: NetworkStatus provides information about one of a VM's + networks. + properties: + connected: + description: |- + Connected is a flag that indicates whether this network is currently + connected to the VM. + type: boolean + ipAddrs: + description: IPAddrs is one or more IP addresses reported by + vm-tools. + items: + type: string + type: array + macAddr: + description: MACAddr is the MAC address of the network device. + type: string + networkName: + description: NetworkName is the name of the network. + type: string + required: + - macAddr + type: object + type: array + ready: + description: |- + Ready is true when the provider resource is ready. + This field is required at runtime for other controllers that read + this CRD as unstructured data. + type: boolean + retryAfter: + description: RetryAfter tracks the time we can retry queueing a task + format: date-time + type: string + snapshot: + description: |- + Snapshot is the name of the snapshot from which the VM was cloned if + LinkedMode is enabled. + type: string + taskRef: + description: |- + TaskRef is a managed object reference to a Task related to the machine. + This value is set automatically at runtime and should not be set or + modified by users. + type: string + vmRef: + description: |- + VMRef is the VM's Managed Object Reference on vSphere. It can be used by consumers + to programatically get this VM representation on vSphere in case of the need to retrieve informations. + This field is set once the machine is created and should not be changed + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -7163,49 +7150,49 @@ metadata: name: capv-leader-election-role namespace: capv-system rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - configmaps/status - verbs: - - get - - update - - patch -- apiGroups: - - "" - resources: - - events - verbs: - - create -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - configmaps/status + verbs: + - get + - update + - patch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete --- aggregationRule: clusterRoleSelectors: - - matchLabels: - capv.infrastucture.cluster.x-k8s.io/aggregate-to-manager: "true" + - matchLabels: + capv.infrastucture.cluster.x-k8s.io/aggregate-to-manager: "true" apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: @@ -7224,546 +7211,271 @@ metadata: kubeadm.controlplane.cluster.x-k8s.io/aggregate-to-manager: "true" name: capv-manager-role rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - configmaps - - events - - nodes - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - configmaps/status - verbs: - - get - - patch - - update -- apiGroups: - - "" - resources: - - events - verbs: - - create - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims/status - verbs: - - get - - patch - - update -- apiGroups: - - "" - resources: - - secrets - verbs: - - get -- apiGroups: - - "" - resources: - - serviceaccounts - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - services/status - verbs: - - get -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create -- apiGroups: - - cluster.x-k8s.io - resources: - - clusters - - clusters/status - verbs: - - get - - list - - watch -- apiGroups: - - cluster.x-k8s.io - resources: - - machinedeployments - verbs: - - get - - list - - watch -- apiGroups: - - cluster.x-k8s.io - resources: - - machinedeployments - - machinesets - verbs: - - get - - list - - watch -- apiGroups: - - cluster.x-k8s.io - resources: - - machines - verbs: - - get - - list - - patch - - watch -- apiGroups: - - cluster.x-k8s.io - resources: - - machines/status - verbs: - - get - - list - - watch -- apiGroups: - - controlplane.cluster.x-k8s.io - resources: - - kubeadmcontrolplanes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - namespaces - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - nodes - verbs: - - delete - - get - - list -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - crd.nsx.vmware.com - resources: - - subnetsets - - subnetsets/status - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vsphereclusteridentities - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vsphereclusteridentities/status - verbs: - - get - - patch - - update -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vsphereclusters - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vsphereclusters/status - verbs: - - get - - patch - - update -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspheredeploymentzones - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspheredeploymentzones/status - verbs: - - get - - patch - - update -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspherefailuredomains - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspheremachines - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspheremachines/status - verbs: - - get - - patch - - update -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspheremachinetemplates - verbs: - - get - - list - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspherevms - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - infrastructure.cluster.x-k8s.io - resources: - - vspherevms/status - verbs: - - get - - patch - - update -- apiGroups: - - ipam.cluster.x-k8s.io - resources: - - ipaddressclaims - verbs: - - create - - get - - list - - patch - - update - - watch -- apiGroups: - - ipam.cluster.x-k8s.io - resources: - - ipaddresses - verbs: - - get - - list - - watch -- apiGroups: - - netoperator.vmware.com - resources: - - networks - verbs: - - get - - list - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - topology.tanzu.vmware.com - resources: - - availabilityzones - verbs: - - get - - list - - watch -- apiGroups: - - topology.tanzu.vmware.com - resources: - - availabilityzones/status - verbs: - - get - - list - - watch -- apiGroups: - - topology.tanzu.vmware.com - resources: - - zones - verbs: - - get - - list - - watch -- apiGroups: - - vmoperator.vmware.com - resources: - - virtualmachineclasses - verbs: - - get - - list - - watch -- apiGroups: - - vmoperator.vmware.com - resources: - - virtualmachineimages - - virtualmachineimages/status - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmoperator.vmware.com - resources: - - virtualmachines - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmoperator.vmware.com - resources: - - virtualmachineservices - - virtualmachineservices/status - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmoperator.vmware.com - resources: - - virtualmachinesetresourcepolicies - - virtualmachinesetresourcepolicies/status - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmware.com - resources: - - virtualnetworks - - virtualnetworks/status - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - providerserviceaccounts - verbs: - - get - - list - - watch -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - providerserviceaccounts/status - verbs: - - get - - patch - - update -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vsphereclusters - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vsphereclusters/status - verbs: - - get - - patch - - update -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vsphereclustertemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vspheremachines - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vspheremachines/status - verbs: - - get - - patch - - update -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vspheremachinetemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vmware.infrastructure.cluster.x-k8s.io - resources: - - vspheremachinetemplates/status - verbs: - - get - - patch - - update + - apiGroups: + - "" + resources: + - configmaps + - events + - nodes + - secrets + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - configmaps/status + - persistentvolumeclaims/status + verbs: + - get + - patch + - update + - apiGroups: + - "" + resources: + - namespaces + - services + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - "" + resources: + - services/status + verbs: + - get + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - cluster.x-k8s.io + resources: + - clusters + - clusters/status + - machinedeployments + - machines/status + - machinesets + verbs: + - get + - list + - watch + - apiGroups: + - cluster.x-k8s.io + resources: + - machines + verbs: + - get + - list + - patch + - watch + - apiGroups: + - controlplane.cluster.x-k8s.io + resources: + - kubeadmcontrolplanes + verbs: + - get + - list + - watch + - apiGroups: + - crd.nsx.vmware.com + resources: + - subnetsets + - subnetsets/status + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - infrastructure.cluster.x-k8s.io + resources: + - vsphereclusteridentities + - vsphereclusters + - vspheredeploymentzones + - vspherefailuredomains + - vspheremachines + - vspherevms + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - infrastructure.cluster.x-k8s.io + resources: + - vsphereclusteridentities/status + - vsphereclusters/status + - vspheredeploymentzones/status + - vspheremachines/status + - vspherevms/status + verbs: + - get + - patch + - update + - apiGroups: + - infrastructure.cluster.x-k8s.io + resources: + - vspheremachinetemplates + verbs: + - get + - list + - watch + - apiGroups: + - ipam.cluster.x-k8s.io + resources: + - ipaddressclaims + verbs: + - create + - get + - list + - patch + - update + - watch + - apiGroups: + - ipam.cluster.x-k8s.io + resources: + - ipaddresses + verbs: + - get + - list + - watch + - apiGroups: + - netoperator.vmware.com + resources: + - networks + verbs: + - get + - list + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - topology.tanzu.vmware.com + resources: + - availabilityzones + - availabilityzones/status + - zones + verbs: + - get + - list + - watch + - apiGroups: + - vmoperator.vmware.com + resources: + - virtualmachineclasses + verbs: + - get + - list + - watch + - apiGroups: + - vmoperator.vmware.com + resources: + - virtualmachineimages + - virtualmachineimages/status + - virtualmachines + - virtualmachineservices + - virtualmachineservices/status + - virtualmachinesetresourcepolicies + - virtualmachinesetresourcepolicies/status + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - vmware.com + resources: + - virtualnetworks + - virtualnetworks/status + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - vmware.infrastructure.cluster.x-k8s.io + resources: + - providerserviceaccounts + verbs: + - get + - list + - watch + - apiGroups: + - vmware.infrastructure.cluster.x-k8s.io + resources: + - providerserviceaccounts/status + - vsphereclusters/status + - vspheremachines/status + - vspheremachinetemplates/status + verbs: + - get + - patch + - update + - apiGroups: + - vmware.infrastructure.cluster.x-k8s.io + resources: + - vsphereclusters + - vsphereclustertemplates + - vspheremachines + - vspheremachinetemplates + verbs: + - create + - delete + - get + - list + - patch + - update + - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -7777,9 +7489,9 @@ roleRef: kind: Role name: capv-leader-election-role subjects: -- kind: ServiceAccount - name: default - namespace: capv-system + - kind: ServiceAccount + name: default + namespace: capv-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -7792,9 +7504,9 @@ roleRef: kind: ClusterRole name: capv-aggregated-manager-role subjects: -- kind: ServiceAccount - name: default - namespace: capv-system + - kind: ServiceAccount + name: default + namespace: capv-system --- apiVersion: v1 kind: Secret @@ -7818,8 +7530,8 @@ metadata: namespace: capv-system spec: ports: - - port: 443 - targetPort: webhook-server + - port: 443 + targetPort: webhook-server selector: cluster.x-k8s.io/provider: infrastructure-vsphere --- @@ -7905,18 +7617,18 @@ spec: type: RuntimeDefault terminationGracePeriodSeconds: 10 tolerations: - - effect: NoSchedule - key: node-role.kubernetes.io/master - - effect: NoSchedule - key: node-role.kubernetes.io/control-plane + - effect: NoSchedule + key: node-role.kubernetes.io/master + - effect: NoSchedule + key: node-role.kubernetes.io/control-plane volumes: - - name: cert - secret: - defaultMode: 420 - secretName: capv-webhook-service-cert - - name: manager-bootstrap-credentials - secret: - secretName: capv-manager-bootstrap-credentials + - name: cert + secret: + defaultMode: 420 + secretName: capv-webhook-service-cert + - name: manager-bootstrap-credentials + secret: + secretName: capv-manager-bootstrap-credentials --- apiVersion: cert-manager.io/v1 kind: Certificate @@ -7927,8 +7639,8 @@ metadata: namespace: capv-system spec: dnsNames: - - capv-webhook-service.capv-system.svc - - capv-webhook-service.capv-system.svc.cluster.local + - capv-webhook-service.capv-system.svc + - capv-webhook-service.capv-system.svc.cluster.local issuerRef: kind: Issuer name: capv-selfsigned-issuer @@ -7953,90 +7665,90 @@ metadata: cluster.x-k8s.io/provider: infrastructure-vsphere name: capv-mutating-webhook-configuration webhooks: -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspheredeploymentzone - failurePolicy: Fail - matchPolicy: Equivalent - name: default.vspheredeploymentzone.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspheredeploymentzones - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspherefailuredomain - failurePolicy: Fail - matchPolicy: Equivalent - name: default.vspherefailuredomain.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspherefailuredomains - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspheremachine - failurePolicy: Fail - matchPolicy: Equivalent - name: default.vspheremachine.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspheremachines - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspherevm - failurePolicy: Fail - matchPolicy: Equivalent - name: default.vspherevm.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspherevms - sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspheredeploymentzone + failurePolicy: Fail + matchPolicy: Equivalent + name: default.vspheredeploymentzone.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspheredeploymentzones + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspherefailuredomain + failurePolicy: Fail + matchPolicy: Equivalent + name: default.vspherefailuredomain.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspherefailuredomains + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspheremachine + failurePolicy: Fail + matchPolicy: Equivalent + name: default.vspheremachine.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspheremachines + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-vspherevm + failurePolicy: Fail + matchPolicy: Equivalent + name: default.vspherevm.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspherevms + sideEffects: None --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration @@ -8047,108 +7759,108 @@ metadata: cluster.x-k8s.io/provider: infrastructure-vsphere name: capv-validating-webhook-configuration webhooks: -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vsphereclustertemplate - failurePolicy: Fail - matchPolicy: Equivalent - name: validation.vsphereclustertemplate.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vsphereclustertemplates - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspherefailuredomain - failurePolicy: Fail - matchPolicy: Equivalent - name: validation.vspherefailuredomain.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspherefailuredomains - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspheremachine - failurePolicy: Fail - matchPolicy: Equivalent - name: validation.vspheremachine.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspheremachines - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspheremachinetemplate - failurePolicy: Fail - matchPolicy: Equivalent - name: validation.vspheremachinetemplate.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspheremachinetemplates - sideEffects: None -- admissionReviewVersions: - - v1beta1 - clientConfig: - service: - name: capv-webhook-service - namespace: capv-system - path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspherevm - failurePolicy: Fail - matchPolicy: Equivalent - name: validation.vspherevm.infrastructure.cluster.x-k8s.io - rules: - - apiGroups: - - infrastructure.cluster.x-k8s.io - apiVersions: - - v1beta1 - operations: - - CREATE - - UPDATE - resources: - - vspherevms - sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vsphereclustertemplate + failurePolicy: Fail + matchPolicy: Equivalent + name: validation.vsphereclustertemplate.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vsphereclustertemplates + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspherefailuredomain + failurePolicy: Fail + matchPolicy: Equivalent + name: validation.vspherefailuredomain.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspherefailuredomains + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspheremachine + failurePolicy: Fail + matchPolicy: Equivalent + name: validation.vspheremachine.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspheremachines + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspheremachinetemplate + failurePolicy: Fail + matchPolicy: Equivalent + name: validation.vspheremachinetemplate.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspheremachinetemplates + sideEffects: None + - admissionReviewVersions: + - v1beta1 + clientConfig: + service: + name: capv-webhook-service + namespace: capv-system + path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-vspherevm + failurePolicy: Fail + matchPolicy: Equivalent + name: validation.vspherevm.infrastructure.cluster.x-k8s.io + rules: + - apiGroups: + - infrastructure.cluster.x-k8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - vspherevms + sideEffects: None diff --git a/data/data/install.openshift.io_installconfigs.yaml b/data/data/install.openshift.io_installconfigs.yaml index f4aaf9eba5..ce184af8eb 100644 --- a/data/data/install.openshift.io_installconfigs.yaml +++ b/data/data/install.openshift.io_installconfigs.yaml @@ -1149,6 +1149,38 @@ spec: cores to assign a vm. format: int32 type: integer + dataDisks: + description: DataDisks are additional disks to add to the + VM that are not part of the VM's OVA template. + items: + description: DataDisk defines a data disk to add to the + VM that is not part of the VM OVA template. + properties: + name: + description: |- + name is used to identify the disk definition. name is required needs to be unique so that it can be used to + clearly identify purpose of the disk. + example: images_1 + maxLength: 80 + pattern: ^[a-zA-Z0-9]([-_a-zA-Z0-9]*[a-zA-Z0-9])?$ + type: string + sizeGiB: + description: |- + sizeGiB is the size of the disk in GiB. + The maximum supported size is 16384 GiB. + format: int32 + maximum: 16384 + minimum: 1 + type: integer + required: + - name + - sizeGiB + type: object + maxItems: 29 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map memoryMB: description: Memory is the size of a VM's memory in MB. format: int64 @@ -2215,6 +2247,38 @@ spec: cores to assign a vm. format: int32 type: integer + dataDisks: + description: DataDisks are additional disks to add to the + VM that are not part of the VM's OVA template. + items: + description: DataDisk defines a data disk to add to the + VM that is not part of the VM OVA template. + properties: + name: + description: |- + name is used to identify the disk definition. name is required needs to be unique so that it can be used to + clearly identify purpose of the disk. + example: images_1 + maxLength: 80 + pattern: ^[a-zA-Z0-9]([-_a-zA-Z0-9]*[a-zA-Z0-9])?$ + type: string + sizeGiB: + description: |- + sizeGiB is the size of the disk in GiB. + The maximum supported size is 16384 GiB. + format: int32 + maximum: 16384 + minimum: 1 + type: integer + required: + - name + - sizeGiB + type: object + maxItems: 29 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map memoryMB: description: Memory is the size of a VM's memory in MB. format: int64 @@ -5009,6 +5073,38 @@ spec: cores to assign a vm. format: int32 type: integer + dataDisks: + description: DataDisks are additional disks to add to the + VM that are not part of the VM's OVA template. + items: + description: DataDisk defines a data disk to add to the + VM that is not part of the VM OVA template. + properties: + name: + description: |- + name is used to identify the disk definition. name is required needs to be unique so that it can be used to + clearly identify purpose of the disk. + example: images_1 + maxLength: 80 + pattern: ^[a-zA-Z0-9]([-_a-zA-Z0-9]*[a-zA-Z0-9])?$ + type: string + sizeGiB: + description: |- + sizeGiB is the size of the disk in GiB. + The maximum supported size is 16384 GiB. + format: int32 + maximum: 16384 + minimum: 1 + type: integer + required: + - name + - sizeGiB + type: object + maxItems: 29 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map memoryMB: description: Memory is the size of a VM's memory in MB. format: int64 diff --git a/pkg/asset/machines/vsphere/capimachines.go b/pkg/asset/machines/vsphere/capimachines.go index d289f5637f..2ffc1dcd22 100644 --- a/pkg/asset/machines/vsphere/capimachines.go +++ b/pkg/asset/machines/vsphere/capimachines.go @@ -156,6 +156,19 @@ func GenerateMachines(ctx context.Context, clusterID string, config *types.Insta return nil, fmt.Errorf("unable to find failure domain for machine %s", machine.Name) } + // If we have additional disks to add to VM, lets iterate through them and add to CAPV machine + if len(providerSpec.DataDisks) > 0 { + dataDisks := []capv.VSphereDisk{} + for _, disk := range providerSpec.DataDisks { + newDisk := capv.VSphereDisk{ + Name: disk.Name, + SizeGiB: disk.SizeGiB, + } + dataDisks = append(dataDisks, newDisk) + } + vsphereMachine.Spec.DataDisks = dataDisks + } + vsphereMachine.SetGroupVersionKind(capv.GroupVersion.WithKind("VSphereMachine")) capvMachines = append(capvMachines, vsphereMachine) diff --git a/pkg/asset/machines/vsphere/machines.go b/pkg/asset/machines/vsphere/machines.go index 557a00153a..4f8697602c 100644 --- a/pkg/asset/machines/vsphere/machines.go +++ b/pkg/asset/machines/vsphere/machines.go @@ -342,6 +342,15 @@ func provider(clusterID string, vcenter *vsphere.VCenter, failureDomain vsphere. networkDeviceSpec[i] = machineapi.NetworkDeviceSpec{NetworkName: network} } + dataDisks := []machineapi.VSphereDisk{} + for _, curDisk := range mpool.DataDisks { + newDisk := machineapi.VSphereDisk{ + Name: curDisk.Name, + SizeGiB: curDisk.SizeGiB, + } + dataDisks = append(dataDisks, newDisk) + } + vSphereMachineProviderSpec := &machineapi.VSphereMachineProviderSpec{ TypeMeta: metav1.TypeMeta{ APIVersion: machineapi.SchemeGroupVersion.String(), @@ -365,6 +374,7 @@ func provider(clusterID string, vcenter *vsphere.VCenter, failureDomain vsphere. NumCoresPerSocket: mpool.NumCoresPerSocket, MemoryMiB: mpool.MemoryMiB, DiskGiB: mpool.OSDisk.DiskSizeGB, + DataDisks: dataDisks, } if failureDomain.ZoneType == vsphere.HostGroupFailureDomain { diff --git a/pkg/infrastructure/clusterapi/clusterapi.go b/pkg/infrastructure/clusterapi/clusterapi.go index 75bed96d04..fb51e8f3d6 100644 --- a/pkg/infrastructure/clusterapi/clusterapi.go +++ b/pkg/infrastructure/clusterapi/clusterapi.go @@ -629,7 +629,8 @@ func checkMachineReady(machine *clusterv1.Machine, requirePublicIP bool) (bool, logrus.Debugf("Machine %s has not yet provisioned: %s", machine.Name, machine.Status.Phase) return false, nil } else if machine.Status.Phase == string(clusterv1.MachinePhaseFailed) { - msg := ptr.Deref(machine.Status.FailureMessage, "machine.Status.FailureMessage was not set") + //TODO: We need to update this to use non deprecated field + msg := ptr.Deref(machine.Status.FailureMessage, "machine.Status.FailureMessage was not set") //nolint:staticcheck return false, fmt.Errorf("machine %s failed to provision: %s", machine.Name, msg) } logrus.Debugf("Machine %s has status: %s", machine.Name, machine.Status.Phase) diff --git a/pkg/types/vsphere/machinepool.go b/pkg/types/vsphere/machinepool.go index 1b4cd6ae0e..e864d82637 100644 --- a/pkg/types/vsphere/machinepool.go +++ b/pkg/types/vsphere/machinepool.go @@ -24,6 +24,14 @@ type MachinePool struct { // +optional OSDisk `json:"osDisk"` + // DataDisks are additional disks to add to the VM that are not part of the VM's OVA template. + // + // +optional + // +listType=map + // +listMapKey=name + // +kubebuilder:validation:MaxItems=29 + DataDisks []DataDisk `json:"dataDisks"` + // Zones defines available zones // Zones is available in TechPreview. // @@ -39,6 +47,23 @@ type OSDisk struct { DiskSizeGB int32 `json:"diskSizeGB"` } +// DataDisk defines a data disk to add to the VM that is not part of the VM OVA template. +type DataDisk struct { + // name is used to identify the disk definition. name is required needs to be unique so that it can be used to + // clearly identify purpose of the disk. + // +kubebuilder:example=images_1 + // +kubebuilder:validation:MaxLength=80 + // +kubebuilder:validation:Pattern="^[a-zA-Z0-9]([-_a-zA-Z0-9]*[a-zA-Z0-9])?$" + // +required + Name string `json:"name"` + // sizeGiB is the size of the disk in GiB. + // The maximum supported size is 16384 GiB. + // +kubebuilder:validation:Minimum=1 + // +kubebuilder:validation:Maximum=16384 + // +required + SizeGiB int32 `json:"sizeGiB"` +} + // Set sets the values from `required` to `p`. func (p *MachinePool) Set(required *MachinePool) { if required == nil || p == nil { @@ -64,4 +89,8 @@ func (p *MachinePool) Set(required *MachinePool) { if len(required.Zones) > 0 { p.Zones = required.Zones } + + if len(required.DataDisks) > 0 { + p.DataDisks = required.DataDisks + } } diff --git a/pkg/types/vsphere/validation/featuregates.go b/pkg/types/vsphere/validation/featuregates.go index 1a14177aa6..5361c93915 100644 --- a/pkg/types/vsphere/validation/featuregates.go +++ b/pkg/types/vsphere/validation/featuregates.go @@ -23,6 +23,9 @@ func GatedFeatures(c *types.InstallConfig) []featuregates.GatedInstallConfigFeat } } + cpDef := c.ControlPlane.Platform.VSphere + computeDefs := c.Compute + return []featuregates.GatedInstallConfigFeature{ { FeatureGateName: features.FeatureGateVSphereStaticIPs, @@ -55,5 +58,26 @@ func GatedFeatures(c *types.InstallConfig) []featuregates.GatedInstallConfigFeat return false }(v), }, + { + FeatureGateName: features.FeatureGateVSphereMultiDisk, + Condition: cpDef != nil && len(cpDef.DataDisks) > 0, // Here we need to check disk count + Field: field.NewPath("controlPlane", "platform", "vsphere", "dataDisks"), + }, + { + FeatureGateName: features.FeatureGateVSphereMultiDisk, + Condition: hasDataDisks(computeDefs), // Here we need to check disk count + Field: field.NewPath("compute", "platform", "vsphere", "dataDisks"), + }, } } + +func hasDataDisks(pool []types.MachinePool) bool { + foundDataDisks := false + for _, machine := range pool { + if machine.Platform.VSphere != nil && len(machine.Platform.VSphere.DataDisks) > 0 { + foundDataDisks = true + break + } + } + return foundDataDisks +}