diff --git a/deploy/00crds.yaml b/deploy/00crds.yaml index b1678c4..836fd7b 100644 --- a/deploy/00crds.yaml +++ b/deploy/00crds.yaml @@ -9,6 +9,295 @@ metadata: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.17.1 + name: arraycreds.vjailbreak.k8s.pf9.io +spec: + group: vjailbreak.k8s.pf9.io + names: + kind: ArrayCreds + listKind: ArrayCredsList + plural: arraycreds + singular: arraycreds + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.vendorType + name: Vendor + type: string + - jsonPath: .spec.openstackMapping.volumeType + name: VolumeType + type: string + - jsonPath: .spec.openstackMapping.cinderBackendName + name: Backend + type: string + - jsonPath: .status.phase + name: Phase + type: string + - jsonPath: .status.arrayValidationStatus + name: Status + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + ArrayCreds is the Schema for the storage array credentials API that defines authentication + and connection details for storage arrays. It provides a secure way to store and validate + storage array credentials for use in migration operations, supporting multiple vendors, but as of now + We have qualified pure storage flash array. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + 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: ArrayCredsSpec defines the desired state of ArrayCreds + properties: + autoDiscovered: + description: AutoDiscovered indicates if this ArrayCreds was auto-discovered + from OpenStack + type: boolean + openstackMapping: + description: OpenStackMapping is the openstack mapping for this array + properties: + cinderBackendName: + description: |- + CinderBackendName is the Cinder backend name for this mapping + This is the backend configured in cinder.conf (e.g., "pure-01") + type: string + cinderBackendPool: + description: CinderBackendPool is the pool name within the backend + (optional) + type: string + cinderHost: + description: |- + CinderHost is the full Cinder host string for manage API + Format: hostname@backend or hostname@backend#pool (e.g., "pcd-ce@pure-iscsi-1#vt-pure-iscsi") + type: string + volumeType: + description: VolumeType is the Cinder volume type associated with + this mapping + type: string + required: + - cinderBackendName + - volumeType + type: object + secretRef: + description: SecretRef is the reference to the Kubernetes secret holding + storage array credentials + 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 + vendorType: + description: VendorType is the storage array vendor type (e.g., pure, + ontap, hpalletra) + type: string + required: + - vendorType + type: object + status: + description: ArrayCredsStatus defines the observed state of ArrayCreds + properties: + arrayValidationMessage: + description: ArrayValidationMessage is the message associated with + the storage array validation + type: string + arrayValidationStatus: + description: |- + ArrayValidationStatus is the status of the storage array validation + Possible values: Pending, Succeeded, Failed, AwaitingCredentials + type: string + dataStore: + description: DataStore is the list of datastores associated with this + array + items: + description: DatastoreInfo holds datastore information including + backing device NAA + properties: + backingNAA: + type: string + backingUUID: + type: string + capacity: + format: int64 + type: integer + freeSpace: + format: int64 + type: integer + moID: + type: string + name: + type: string + type: + type: string + required: + - backingNAA + - backingUUID + - capacity + - freeSpace + - moID + - name + - type + type: object + type: array + phase: + description: |- + Phase indicates the current phase of the ArrayCreds + Possible values: Discovered, Configured, Validated, Failed + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.17.1 + name: arraycredsmappings.vjailbreak.k8s.pf9.io +spec: + group: vjailbreak.k8s.pf9.io + names: + kind: ArrayCredsMapping + listKind: ArrayCredsMappingList + plural: arraycredsmappings + singular: arraycredsmapping + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.validationStatus + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + ArrayCredsMapping is the Schema for the arraycredsmappings API that defines + mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy storage migration + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + 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: |- + ArrayCredsMappingSpec defines the desired state of ArrayCredsMapping including + mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy data copy + properties: + mappings: + description: Mappings is a list of datastore to ArrayCreds mappings + items: + description: DatastoreArrayCredsMapping represents a mapping between + a VMware datastore and ArrayCreds + properties: + source: + description: Source is the name of the source datastore in VMware + type: string + target: + description: Target is the name of the ArrayCreds resource to + use for this datastore + type: string + required: + - source + - target + type: object + type: array + required: + - mappings + type: object + status: + description: ArrayCredsMappingStatus defines the observed state of ArrayCredsMapping + properties: + validationMessage: + description: |- + ValidationMessage provides detailed validation information including + information about available ArrayCreds and any validation errors + type: string + validationStatus: + description: |- + ValidationStatus indicates the validation status of the ArrayCreds mapping + Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed" + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.1 @@ -491,6 +780,9 @@ spec: adminInitiatedCutOver: default: false type: boolean + arrayOffload: + default: false + type: boolean dataCopyStart: format: date-time type: string @@ -647,6 +939,13 @@ spec: migrationPlan: description: MigrationPlan is the name of the migration plan type: string + migrationType: + description: MigrationType indicates whether this is a hot (live) + or cold migration + enum: + - hot + - cold + type: string podRef: description: PodRef is the name of the pod type: string @@ -713,6 +1012,11 @@ spec: - type type: object type: array + currentDisk: + description: |- + CurrentDisk tracks which disk is currently being copied (e.g., "0", "1") + Extracted from migration pod events + type: string phase: description: Phase is the current phase of the migration enum: @@ -728,7 +1032,23 @@ spec: - Succeeded - Failed - Unknown + - ConnectingToESXi + - CreatingInitiatorGroup + - CreatingVolume + - ImportingToCinder + - MappingVolume + - RescanningStorage + - XCOPYInProgress type: string + retryable: + description: |- + Retryable indicates whether this migration can be retried when it fails. + Set to false for VMs with RDM (Raw Device Mapping) disks that share storage, + as RDM disk migration state prevents automatic retry. + type: boolean + totalDisks: + description: TotalDisks is the total number of disks to be migrated + type: integer required: - phase type: object @@ -784,6 +1104,11 @@ spec: description: MigrationTemplateSpec defines the desired state of MigrationTemplate including source/destination environments and mappings properties: + arrayCredsMapping: + description: |- + ArrayCredsMapping is the reference to the ArrayCredsMapping resource that defines datastore to ArrayCreds mappings + This is used for StorageAcceleratedCopy data copy method + type: string destination: description: Destination is the destination details for the virtual machine @@ -815,9 +1140,19 @@ spec: required: - vmwareRef type: object + storageCopyMethod: + default: normal + description: |- + StorageCopyMethod indicates the method to use for storage migration + Valid values: "normal" (default), "StorageAcceleratedCopy" + enum: + - normal + - StorageAcceleratedCopy + type: string storageMapping: - description: StorageMapping is the reference to the StorageMapping - resource that defines source to destination storage mappings + description: |- + StorageMapping is the reference to the StorageMapping resource that defines source to destination storage mappings + This is used for normal data copy method type: string targetPCDClusterName: description: TargetPCDClusterName is the name of the PCD cluster where @@ -839,7 +1174,6 @@ spec: - destination - networkMapping - source - - storageMapping type: object type: object served: true @@ -1049,6 +1383,22 @@ spec: - vcpus type: object type: array + osAuthToken: + type: string + osAuthUrl: + type: string + osDomainName: + type: string + osInsecure: + type: boolean + osPassword: + type: string + osRegionName: + type: string + osTenantName: + type: string + osUsername: + type: string pcdHostConfig: description: PCDHostConfig is the list of available clusters in openstack items: @@ -1719,6 +2069,9 @@ spec: adminInitiatedCutOver: default: false type: boolean + arrayOffload: + default: false + type: boolean dataCopyStart: format: date-time type: string @@ -2410,7 +2763,18 @@ spec: disks: description: Disks is the list of disks for the virtual machine items: - type: string + description: Disk represents a virtual disk attached to a virtual + machine + properties: + capacityGB: + type: integer + datastore: + type: string + datastoreId: + type: string + name: + type: string + type: object type: array esxiName: description: ESXiName is the name of the ESXi host @@ -2840,6 +3204,7 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - arraycreds - bmconfigs - clustermigrations - esximigrations @@ -2869,6 +3234,7 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - arraycreds/finalizers - bmconfigs/finalizers - clustermigrations/finalizers - esximigrations/finalizers @@ -2888,6 +3254,7 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - arraycreds/status - bmconfigs/status - clustermigrations/status - esximigrations/status @@ -3749,6 +4116,12 @@ kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/backend-protocol: HTTP + nginx.ingress.kubernetes.io/proxy-body-size: 500m + nginx.ingress.kubernetes.io/proxy-buffering: "off" + nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" + nginx.ingress.kubernetes.io/proxy-read-timeout: "600" + nginx.ingress.kubernetes.io/proxy-request-buffering: "off" + nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/use-regex: "true" name: migration-vpwned-ingress diff --git a/deploy/04ui.yaml b/deploy/04ui.yaml index b579940..c63194c 100644 --- a/deploy/04ui.yaml +++ b/deploy/04ui.yaml @@ -45,6 +45,12 @@ metadata: nginx.ingress.kubernetes.io/backend-protocol: "HTTP" nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/ssl-redirect: "true" + nginx.ingress.kubernetes.io/proxy-body-size: "500m" + nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "600" + nginx.ingress.kubernetes.io/proxy-read-timeout: "600" + nginx.ingress.kubernetes.io/proxy-buffering: "off" + nginx.ingress.kubernetes.io/proxy-request-buffering: "off" spec: ingressClassName: nginx rules: diff --git a/deploy/installer.yaml b/deploy/installer.yaml index a3dc4d1..94c7f7e 100644 --- a/deploy/installer.yaml +++ b/deploy/installer.yaml @@ -9,6 +9,295 @@ metadata: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.17.1 + name: arraycreds.vjailbreak.k8s.pf9.io +spec: + group: vjailbreak.k8s.pf9.io + names: + kind: ArrayCreds + listKind: ArrayCredsList + plural: arraycreds + singular: arraycreds + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.vendorType + name: Vendor + type: string + - jsonPath: .spec.openstackMapping.volumeType + name: VolumeType + type: string + - jsonPath: .spec.openstackMapping.cinderBackendName + name: Backend + type: string + - jsonPath: .status.phase + name: Phase + type: string + - jsonPath: .status.arrayValidationStatus + name: Status + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + ArrayCreds is the Schema for the storage array credentials API that defines authentication + and connection details for storage arrays. It provides a secure way to store and validate + storage array credentials for use in migration operations, supporting multiple vendors, but as of now + We have qualified pure storage flash array. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + 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: ArrayCredsSpec defines the desired state of ArrayCreds + properties: + autoDiscovered: + description: AutoDiscovered indicates if this ArrayCreds was auto-discovered + from OpenStack + type: boolean + openstackMapping: + description: OpenStackMapping is the openstack mapping for this array + properties: + cinderBackendName: + description: |- + CinderBackendName is the Cinder backend name for this mapping + This is the backend configured in cinder.conf (e.g., "pure-01") + type: string + cinderBackendPool: + description: CinderBackendPool is the pool name within the backend + (optional) + type: string + cinderHost: + description: |- + CinderHost is the full Cinder host string for manage API + Format: hostname@backend or hostname@backend#pool (e.g., "pcd-ce@pure-iscsi-1#vt-pure-iscsi") + type: string + volumeType: + description: VolumeType is the Cinder volume type associated with + this mapping + type: string + required: + - cinderBackendName + - volumeType + type: object + secretRef: + description: SecretRef is the reference to the Kubernetes secret holding + storage array credentials + 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 + vendorType: + description: VendorType is the storage array vendor type (e.g., pure, + ontap, hpalletra) + type: string + required: + - vendorType + type: object + status: + description: ArrayCredsStatus defines the observed state of ArrayCreds + properties: + arrayValidationMessage: + description: ArrayValidationMessage is the message associated with + the storage array validation + type: string + arrayValidationStatus: + description: |- + ArrayValidationStatus is the status of the storage array validation + Possible values: Pending, Succeeded, Failed, AwaitingCredentials + type: string + dataStore: + description: DataStore is the list of datastores associated with this + array + items: + description: DatastoreInfo holds datastore information including + backing device NAA + properties: + backingNAA: + type: string + backingUUID: + type: string + capacity: + format: int64 + type: integer + freeSpace: + format: int64 + type: integer + moID: + type: string + name: + type: string + type: + type: string + required: + - backingNAA + - backingUUID + - capacity + - freeSpace + - moID + - name + - type + type: object + type: array + phase: + description: |- + Phase indicates the current phase of the ArrayCreds + Possible values: Discovered, Configured, Validated, Failed + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.17.1 + name: arraycredsmappings.vjailbreak.k8s.pf9.io +spec: + group: vjailbreak.k8s.pf9.io + names: + kind: ArrayCredsMapping + listKind: ArrayCredsMappingList + plural: arraycredsmappings + singular: arraycredsmapping + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.validationStatus + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + ArrayCredsMapping is the Schema for the arraycredsmappings API that defines + mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy storage migration + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + 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: |- + ArrayCredsMappingSpec defines the desired state of ArrayCredsMapping including + mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy data copy + properties: + mappings: + description: Mappings is a list of datastore to ArrayCreds mappings + items: + description: DatastoreArrayCredsMapping represents a mapping between + a VMware datastore and ArrayCreds + properties: + source: + description: Source is the name of the source datastore in VMware + type: string + target: + description: Target is the name of the ArrayCreds resource to + use for this datastore + type: string + required: + - source + - target + type: object + type: array + required: + - mappings + type: object + status: + description: ArrayCredsMappingStatus defines the observed state of ArrayCredsMapping + properties: + validationMessage: + description: |- + ValidationMessage provides detailed validation information including + information about available ArrayCreds and any validation errors + type: string + validationStatus: + description: |- + ValidationStatus indicates the validation status of the ArrayCreds mapping + Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed" + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.1 @@ -491,6 +780,9 @@ spec: adminInitiatedCutOver: default: false type: boolean + arrayOffload: + default: false + type: boolean dataCopyStart: format: date-time type: string @@ -647,6 +939,13 @@ spec: migrationPlan: description: MigrationPlan is the name of the migration plan type: string + migrationType: + description: MigrationType indicates whether this is a hot (live) + or cold migration + enum: + - hot + - cold + type: string podRef: description: PodRef is the name of the pod type: string @@ -713,6 +1012,11 @@ spec: - type type: object type: array + currentDisk: + description: |- + CurrentDisk tracks which disk is currently being copied (e.g., "0", "1") + Extracted from migration pod events + type: string phase: description: Phase is the current phase of the migration enum: @@ -728,7 +1032,23 @@ spec: - Succeeded - Failed - Unknown + - ConnectingToESXi + - CreatingInitiatorGroup + - CreatingVolume + - ImportingToCinder + - MappingVolume + - RescanningStorage + - XCOPYInProgress type: string + retryable: + description: |- + Retryable indicates whether this migration can be retried when it fails. + Set to false for VMs with RDM (Raw Device Mapping) disks that share storage, + as RDM disk migration state prevents automatic retry. + type: boolean + totalDisks: + description: TotalDisks is the total number of disks to be migrated + type: integer required: - phase type: object @@ -784,6 +1104,11 @@ spec: description: MigrationTemplateSpec defines the desired state of MigrationTemplate including source/destination environments and mappings properties: + arrayCredsMapping: + description: |- + ArrayCredsMapping is the reference to the ArrayCredsMapping resource that defines datastore to ArrayCreds mappings + This is used for StorageAcceleratedCopy data copy method + type: string destination: description: Destination is the destination details for the virtual machine @@ -815,9 +1140,19 @@ spec: required: - vmwareRef type: object + storageCopyMethod: + default: normal + description: |- + StorageCopyMethod indicates the method to use for storage migration + Valid values: "normal" (default), "StorageAcceleratedCopy" + enum: + - normal + - StorageAcceleratedCopy + type: string storageMapping: - description: StorageMapping is the reference to the StorageMapping - resource that defines source to destination storage mappings + description: |- + StorageMapping is the reference to the StorageMapping resource that defines source to destination storage mappings + This is used for normal data copy method type: string targetPCDClusterName: description: TargetPCDClusterName is the name of the PCD cluster where @@ -839,7 +1174,6 @@ spec: - destination - networkMapping - source - - storageMapping type: object type: object served: true @@ -1049,6 +1383,22 @@ spec: - vcpus type: object type: array + osAuthToken: + type: string + osAuthUrl: + type: string + osDomainName: + type: string + osInsecure: + type: boolean + osPassword: + type: string + osRegionName: + type: string + osTenantName: + type: string + osUsername: + type: string pcdHostConfig: description: PCDHostConfig is the list of available clusters in openstack items: @@ -1719,6 +2069,9 @@ spec: adminInitiatedCutOver: default: false type: boolean + arrayOffload: + default: false + type: boolean dataCopyStart: format: date-time type: string @@ -2410,7 +2763,18 @@ spec: disks: description: Disks is the list of disks for the virtual machine items: - type: string + description: Disk represents a virtual disk attached to a virtual + machine + properties: + capacityGB: + type: integer + datastore: + type: string + datastoreId: + type: string + name: + type: string + type: object type: array esxiName: description: ESXiName is the name of the ESXi host @@ -2840,6 +3204,7 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - arraycreds - bmconfigs - clustermigrations - esximigrations @@ -2869,6 +3234,7 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - arraycreds/finalizers - bmconfigs/finalizers - clustermigrations/finalizers - esximigrations/finalizers @@ -2888,6 +3254,7 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - arraycreds/status - bmconfigs/status - clustermigrations/status - esximigrations/status @@ -3882,6 +4249,8 @@ spec: - mountPath: /etc/hosts name: hosts-file readOnly: true + - mountPath: /home/ubuntu + name: vddk-storage dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler @@ -3893,12 +4262,22 @@ spec: path: /etc/hosts type: File name: hosts-file + - hostPath: + path: /home/ubuntu + type: DirectoryOrCreate + name: vddk-storage --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/backend-protocol: HTTP + nginx.ingress.kubernetes.io/proxy-body-size: 500m + nginx.ingress.kubernetes.io/proxy-buffering: "off" + nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" + nginx.ingress.kubernetes.io/proxy-read-timeout: "600" + nginx.ingress.kubernetes.io/proxy-request-buffering: "off" + nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/use-regex: "true" name: migration-vpwned-ingress diff --git a/image_builder/configs/vjailbreak-settings.yaml b/image_builder/configs/vjailbreak-settings.yaml index 3b45a3f..cde90dd 100644 --- a/image_builder/configs/vjailbreak-settings.yaml +++ b/image_builder/configs/vjailbreak-settings.yaml @@ -24,3 +24,10 @@ data: PERIODIC_SYNC_RETRY_CAP: "3h" # max retry interval for CBT sync AUTO_FSTAB_UPDATE: "false" # automatically update fstab AUTO_PXE_BOOT_ON_CONVERSION: "false" # automatically set machine to PXE boot during cluster conversion + V2V_HELPER_POD_CPU_REQUEST: "1000m" + V2V_HELPER_POD_MEMORY_REQUEST: "2Gi" + V2V_HELPER_POD_CPU_LIMIT: "2000m" + V2V_HELPER_POD_MEMORY_LIMIT: "5Gi" + V2V_HELPER_POD_EPHEMERAL_STORAGE_REQUEST: "3Gi" + V2V_HELPER_POD_EPHEMERAL_STORAGE_LIMIT: "3Gi" + diff --git a/releases/v0.4.0.md b/releases/v0.4.0.md new file mode 100644 index 0000000..46f333b --- /dev/null +++ b/releases/v0.4.0.md @@ -0,0 +1,60 @@ +# v0.4.0 + +- **Tag:** `v0.4.0` +- **Published:** 2026-02-03T10:40:48Z +- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.0 + +## Release Notes + +## What's Changed +* Added link to public documentation in the ui by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1345 +* #1336, #834 :: UI implement feedback changes by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1346 +* Implement Storage SDK Foundation (#1091 #1093) - PART1 by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1291 +* continues the array-accelerated migration work by implementing the storage array gRPC server layer by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1350 +* Storage SDK Foundation - Part 3 -- removed all UI changes by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1353 +* Upload VDDK via UI. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1319 +* fix: Make VCENTER_DATACENTER optional in secret by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1356 +* Reverting 3 commits that introduced breaking changes by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1357 +* storage array integration by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1361 +* Added migration details modal by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1355 +* remove stale folders from the project by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1359 +* Handled trailing slash in vCenter URL by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1349 +* VDDK upload by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1364 +* Added more relevant option in MigrationForm by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1347 +* Bug: Check for empty arraycreds secret ref when normal migration and change names. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1369 +* Restrict retry on rdm migration by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1365 +* Added validation for hotplug flavor discovery by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1360 +* merge two common folders for better code structure by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1379 +* Added return to avoid segmentation fault or panic by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1387 +* VM Migrations stats and alerts on grafana dashboards by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1362 +* #1368, #1367 date time selection is not working for scheduled cutover and copy start time by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1384 +* feat: adding vddk upload status api by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1377 +* deterministic volume ordering during copy by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1389 +* UI: Create UI for storage accelerated copy. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1378 +* Added missing logs for better debugging by @geet-pf9 in https://github.com/platform9/vjailbreak/pull/1401 +* feat: adding vddk version in the api by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1397 +* #731 :: [UI] add prompts for missing VDDK, credentials by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1372 +* Fix - windows 2022 not able to recognise the network interfaces by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1382 +* pass vminfo by reference and improve sync error handling by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1391 +* Reset currentState to initial in case of error and success by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1404 +* Implemented OpenStack token-based authentication by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1394 +* feat: adding fuzzy search by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1392 +* Add VM power status check after poweroff by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1405 +* Make request limit configurable and increase limit to 5Gib by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1407 +* feat: Adding netapp storage.go by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1399 +* Mark migrations ValidationFailed when RDM disk is not managed by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1406 +* Disabled hour-time-picker for scheduled cutover if minutes are disabled by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1415 +* Fix issues in vddk upload page by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1418 +* fix: added buildBackendToVolumeTypeMap function and cleanup logic by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1422 +* #1424 :: The screen flickers first time when clicking on other Global Settings tabs while the VDDK upload is in progress or uploaded by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1429 +* #1434 :: Add ESXi SSH Private Key Input Field to Storage Array Credentials Page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1435 +* Prioritizing Cold Migration in case of cutover options selected with cold migration by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1439 +* #1444 :: Couldn't upload ssh key without an extension by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1447 +* Throttling the go routines during copying changed block stage by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1446 +* UI :: #1438 :: Admin cutover + cold migration is not a valid usecase by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1441 +* #1430 :: Updating the vJailbreak settings through the UI removes ConfigMap keys that are not shown in the UI by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1436 + +## New Contributors +* @geet-pf9 made their first contribution in https://github.com/platform9/vjailbreak/pull/1401 + +**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.8...v0.4.0