Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e92311606 | ||
|
|
47983006c0 |
+653
-5
@@ -9,6 +9,295 @@ metadata:
|
|||||||
---
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
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:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.17.1
|
controller-gen.kubebuilder.io/version: v0.17.1
|
||||||
@@ -391,6 +680,156 @@ spec:
|
|||||||
---
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.17.1
|
||||||
|
name: esxisshcreds.vjailbreak.k8s.pf9.io
|
||||||
|
spec:
|
||||||
|
group: vjailbreak.k8s.pf9.io
|
||||||
|
names:
|
||||||
|
kind: ESXiSSHCreds
|
||||||
|
listKind: ESXiSSHCredsList
|
||||||
|
plural: esxisshcreds
|
||||||
|
singular: esxisshcreds
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.validationStatus
|
||||||
|
name: Status
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.successfulHosts
|
||||||
|
name: Successful
|
||||||
|
type: integer
|
||||||
|
- jsonPath: .status.failedHosts
|
||||||
|
name: Failed
|
||||||
|
type: integer
|
||||||
|
- jsonPath: .status.totalHosts
|
||||||
|
name: Total
|
||||||
|
type: integer
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
ESXiSSHCreds is the Schema for the esxisshcreds API that defines SSH credentials
|
||||||
|
for connecting to ESXi hosts. It validates SSH connectivity to ESXi hosts either
|
||||||
|
discovered from vCenter via VMwareCreds or explicitly specified in the hosts list.
|
||||||
|
The controller validates connections in parallel with throttling to avoid overwhelming
|
||||||
|
the network, and reports per-host validation results in the status.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
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: ESXiSSHCredsSpec defines the desired state of ESXiSSHCreds
|
||||||
|
properties:
|
||||||
|
forceReconcileToken:
|
||||||
|
description: |-
|
||||||
|
ForceReconcileToken is an opaque token that can be updated to force a reconciliation.
|
||||||
|
Updating this field will increment metadata.generation and trigger the controller.
|
||||||
|
type: string
|
||||||
|
secretRef:
|
||||||
|
description: |-
|
||||||
|
SecretRef is the reference to the Kubernetes secret holding the SSH private key
|
||||||
|
The secret should contain a key named "privateKey" with the SSH private key in PEM format
|
||||||
|
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
|
||||||
|
username:
|
||||||
|
default: root
|
||||||
|
description: 'Username is the SSH username to use for connecting to
|
||||||
|
ESXi hosts (default: "root")'
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- secretRef
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ESXiSSHCredsStatus defines the observed state of ESXiSSHCreds
|
||||||
|
properties:
|
||||||
|
failedHosts:
|
||||||
|
description: FailedHosts is the number of ESXi hosts that failed validation
|
||||||
|
type: integer
|
||||||
|
lastValidationTime:
|
||||||
|
description: LastValidationTime is the timestamp of the last validation
|
||||||
|
run
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
successfulHosts:
|
||||||
|
description: SuccessfulHosts is the number of ESXi hosts that passed
|
||||||
|
validation
|
||||||
|
type: integer
|
||||||
|
totalHosts:
|
||||||
|
description: TotalHosts is the total number of ESXi hosts to validate
|
||||||
|
type: integer
|
||||||
|
validationMessage:
|
||||||
|
description: ValidationMessage is the message associated with the
|
||||||
|
overall validation
|
||||||
|
type: string
|
||||||
|
validationStatus:
|
||||||
|
description: |-
|
||||||
|
ValidationStatus is the overall status of the ESXi SSH validation
|
||||||
|
Possible values: Pending, Validating, Succeeded, PartiallySucceeded, Failed
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.17.1
|
controller-gen.kubebuilder.io/version: v0.17.1
|
||||||
@@ -408,6 +847,12 @@ spec:
|
|||||||
- jsonPath: .status.migrationStatus
|
- jsonPath: .status.migrationStatus
|
||||||
name: Status
|
name: Status
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.migrationTemplate
|
||||||
|
name: Migration Template
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -443,6 +888,11 @@ spec:
|
|||||||
description: AdvancedOptions is a list of advanced options for the
|
description: AdvancedOptions is a list of advanced options for the
|
||||||
migration
|
migration
|
||||||
properties:
|
properties:
|
||||||
|
acknowledgeNetworkConflictRisk:
|
||||||
|
description: AcknowledgeNetworkConflictRisk indicates that the
|
||||||
|
user acknowledges the risk of network conflicts when doing live
|
||||||
|
migration
|
||||||
|
type: boolean
|
||||||
granularNetworks:
|
granularNetworks:
|
||||||
description: GranularNetworks is a list of networks to be migrated
|
description: GranularNetworks is a list of networks to be migrated
|
||||||
items:
|
items:
|
||||||
@@ -471,6 +921,10 @@ spec:
|
|||||||
description: PeriodicSyncInterval is the interval at which the
|
description: PeriodicSyncInterval is the interval at which the
|
||||||
migration plan should be synced
|
migration plan should be synced
|
||||||
type: string
|
type: string
|
||||||
|
removeVMwareTools:
|
||||||
|
description: RemoveVMwareTools instructs the migration helper
|
||||||
|
to remove VMware Tools post migration
|
||||||
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
assignedIPsPerVM:
|
assignedIPsPerVM:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
@@ -491,6 +945,9 @@ spec:
|
|||||||
adminInitiatedCutOver:
|
adminInitiatedCutOver:
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
arrayOffload:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
dataCopyStart:
|
dataCopyStart:
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
@@ -507,6 +964,7 @@ spec:
|
|||||||
enum:
|
enum:
|
||||||
- hot
|
- hot
|
||||||
- cold
|
- cold
|
||||||
|
- mock
|
||||||
type: string
|
type: string
|
||||||
vmCutoverEnd:
|
vmCutoverEnd:
|
||||||
format: date-time
|
format: date-time
|
||||||
@@ -521,6 +979,34 @@ spec:
|
|||||||
description: MigrationTemplate is the template to be used for the
|
description: MigrationTemplate is the template to be used for the
|
||||||
migration
|
migration
|
||||||
type: string
|
type: string
|
||||||
|
networkOverridesPerVM:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
description: NICOverride defines per-NIC overrides for IP and
|
||||||
|
MAC preservation during migration
|
||||||
|
properties:
|
||||||
|
interfaceIndex:
|
||||||
|
description: InterfaceIndex is the zero-based index of the
|
||||||
|
NIC
|
||||||
|
type: integer
|
||||||
|
preserveIP:
|
||||||
|
description: |-
|
||||||
|
PreserveIP indicates whether to preserve the source VM's IP address for this NIC.
|
||||||
|
When nil the migration default (preserve) is used.
|
||||||
|
type: boolean
|
||||||
|
preserveMAC:
|
||||||
|
description: |-
|
||||||
|
PreserveMAC indicates whether to preserve the source VM's MAC address for this NIC.
|
||||||
|
When nil the migration default (preserve) is used.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- interfaceIndex
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
NetworkOverridesPerVM is a map of VM names to per-NIC network overrides
|
||||||
|
Only NICs with non-default settings (i.e., preserve=false) need to be listed
|
||||||
|
type: object
|
||||||
postMigrationAction:
|
postMigrationAction:
|
||||||
description: PostMigrationAction defines the post migration action
|
description: PostMigrationAction defines the post migration action
|
||||||
for the virtual machine
|
for the virtual machine
|
||||||
@@ -597,6 +1083,9 @@ spec:
|
|||||||
- jsonPath: .status.agentName
|
- jsonPath: .status.agentName
|
||||||
name: Agent Name
|
name: Agent Name
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.migrationPlan
|
||||||
|
name: MigrationPlan
|
||||||
|
type: string
|
||||||
- jsonPath: .metadata.creationTimestamp
|
- jsonPath: .metadata.creationTimestamp
|
||||||
name: Age
|
name: Age
|
||||||
type: date
|
type: date
|
||||||
@@ -647,6 +1136,18 @@ spec:
|
|||||||
migrationPlan:
|
migrationPlan:
|
||||||
description: MigrationPlan is the name of the migration plan
|
description: MigrationPlan is the name of the migration plan
|
||||||
type: string
|
type: string
|
||||||
|
migrationType:
|
||||||
|
description: MigrationType indicates whether this is a hot (live)
|
||||||
|
or cold migration
|
||||||
|
enum:
|
||||||
|
- hot
|
||||||
|
- cold
|
||||||
|
- mock
|
||||||
|
type: string
|
||||||
|
networkOverrides:
|
||||||
|
description: NetworkOverrides is the JSON-serialized per-NIC overrides
|
||||||
|
for IP and MAC preservation
|
||||||
|
type: string
|
||||||
podRef:
|
podRef:
|
||||||
description: PodRef is the name of the pod
|
description: PodRef is the name of the pod
|
||||||
type: string
|
type: string
|
||||||
@@ -713,6 +1214,11 @@ spec:
|
|||||||
- type
|
- type
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
currentDisk:
|
||||||
|
description: |-
|
||||||
|
CurrentDisk tracks which disk is currently being copied (e.g., "0", "1")
|
||||||
|
Extracted from migration pod events
|
||||||
|
type: string
|
||||||
phase:
|
phase:
|
||||||
description: Phase is the current phase of the migration
|
description: Phase is the current phase of the migration
|
||||||
enum:
|
enum:
|
||||||
@@ -728,7 +1234,28 @@ spec:
|
|||||||
- Succeeded
|
- Succeeded
|
||||||
- Failed
|
- Failed
|
||||||
- Unknown
|
- Unknown
|
||||||
|
- ConnectingToESXi
|
||||||
|
- CreatingInitiatorGroup
|
||||||
|
- CreatingVolume
|
||||||
|
- ImportingToCinder
|
||||||
|
- MappingVolume
|
||||||
|
- RescanningStorage
|
||||||
|
- XCOPYInProgress
|
||||||
type: string
|
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
|
||||||
|
syncWarningMessage:
|
||||||
|
description: |-
|
||||||
|
SyncWarningMessage contains the warning message when periodic sync is in a warning state.
|
||||||
|
If non-empty, indicates the sync failed but will auto-retry on next interval.
|
||||||
|
type: string
|
||||||
|
totalDisks:
|
||||||
|
description: TotalDisks is the total number of disks to be migrated
|
||||||
|
type: integer
|
||||||
required:
|
required:
|
||||||
- phase
|
- phase
|
||||||
type: object
|
type: object
|
||||||
@@ -784,6 +1311,11 @@ spec:
|
|||||||
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
|
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
|
||||||
including source/destination environments and mappings
|
including source/destination environments and mappings
|
||||||
properties:
|
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:
|
destination:
|
||||||
description: Destination is the destination details for the virtual
|
description: Destination is the destination details for the virtual
|
||||||
machine
|
machine
|
||||||
@@ -815,9 +1347,19 @@ spec:
|
|||||||
required:
|
required:
|
||||||
- vmwareRef
|
- vmwareRef
|
||||||
type: object
|
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:
|
storageMapping:
|
||||||
description: StorageMapping is the reference to the StorageMapping
|
description: |-
|
||||||
resource that defines source to destination storage mappings
|
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
|
type: string
|
||||||
targetPCDClusterName:
|
targetPCDClusterName:
|
||||||
description: TargetPCDClusterName is the name of the PCD cluster where
|
description: TargetPCDClusterName is the name of the PCD cluster where
|
||||||
@@ -839,7 +1381,6 @@ spec:
|
|||||||
- destination
|
- destination
|
||||||
- networkMapping
|
- networkMapping
|
||||||
- source
|
- source
|
||||||
- storageMapping
|
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
served: true
|
served: true
|
||||||
@@ -958,6 +1499,12 @@ spec:
|
|||||||
- jsonPath: .status.openstackValidationStatus
|
- jsonPath: .status.openstackValidationStatus
|
||||||
name: Status
|
name: Status
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.secretRef.name
|
||||||
|
name: Secret Name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -1049,6 +1596,26 @@ spec:
|
|||||||
- vcpus
|
- vcpus
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
osAuthToken:
|
||||||
|
type: string
|
||||||
|
osAuthUrl:
|
||||||
|
type: string
|
||||||
|
osDomainName:
|
||||||
|
type: string
|
||||||
|
osIdentityApiVersion:
|
||||||
|
type: string
|
||||||
|
osInsecure:
|
||||||
|
type: boolean
|
||||||
|
osInterface:
|
||||||
|
type: string
|
||||||
|
osPassword:
|
||||||
|
type: string
|
||||||
|
osRegionName:
|
||||||
|
type: string
|
||||||
|
osTenantName:
|
||||||
|
type: string
|
||||||
|
osUsername:
|
||||||
|
type: string
|
||||||
pcdHostConfig:
|
pcdHostConfig:
|
||||||
description: PCDHostConfig is the list of available clusters in openstack
|
description: PCDHostConfig is the list of available clusters in openstack
|
||||||
items:
|
items:
|
||||||
@@ -1131,6 +1698,10 @@ spec:
|
|||||||
openstack:
|
openstack:
|
||||||
description: Openstack is the OpenStack configuration for the openstackcreds
|
description: Openstack is the OpenStack configuration for the openstackcreds
|
||||||
properties:
|
properties:
|
||||||
|
backendVolumeTypeMap:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
networks:
|
networks:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
@@ -1585,6 +2156,11 @@ spec:
|
|||||||
description: AdvancedOptions is a list of advanced options for the
|
description: AdvancedOptions is a list of advanced options for the
|
||||||
migration
|
migration
|
||||||
properties:
|
properties:
|
||||||
|
acknowledgeNetworkConflictRisk:
|
||||||
|
description: AcknowledgeNetworkConflictRisk indicates that the
|
||||||
|
user acknowledges the risk of network conflicts when doing live
|
||||||
|
migration
|
||||||
|
type: boolean
|
||||||
granularNetworks:
|
granularNetworks:
|
||||||
description: GranularNetworks is a list of networks to be migrated
|
description: GranularNetworks is a list of networks to be migrated
|
||||||
items:
|
items:
|
||||||
@@ -1613,6 +2189,10 @@ spec:
|
|||||||
description: PeriodicSyncInterval is the interval at which the
|
description: PeriodicSyncInterval is the interval at which the
|
||||||
migration plan should be synced
|
migration plan should be synced
|
||||||
type: string
|
type: string
|
||||||
|
removeVMwareTools:
|
||||||
|
description: RemoveVMwareTools instructs the migration helper
|
||||||
|
to remove VMware Tools post migration
|
||||||
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
bmConfigRef:
|
bmConfigRef:
|
||||||
description: BMConfigRef is the reference to the BMC credentials
|
description: BMConfigRef is the reference to the BMC credentials
|
||||||
@@ -1719,6 +2299,9 @@ spec:
|
|||||||
adminInitiatedCutOver:
|
adminInitiatedCutOver:
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
arrayOffload:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
dataCopyStart:
|
dataCopyStart:
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
@@ -1735,6 +2318,7 @@ spec:
|
|||||||
enum:
|
enum:
|
||||||
- hot
|
- hot
|
||||||
- cold
|
- cold
|
||||||
|
- mock
|
||||||
type: string
|
type: string
|
||||||
vmCutoverEnd:
|
vmCutoverEnd:
|
||||||
format: date-time
|
format: date-time
|
||||||
@@ -2175,6 +2759,12 @@ spec:
|
|||||||
- jsonPath: .status.vmwareValidationStatus
|
- jsonPath: .status.vmwareValidationStatus
|
||||||
name: Status
|
name: Status
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.secretRef.name
|
||||||
|
name: Secret Name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -2329,9 +2919,33 @@ spec:
|
|||||||
name:
|
name:
|
||||||
description: Name of the host
|
description: Name of the host
|
||||||
type: string
|
type: string
|
||||||
|
state:
|
||||||
|
description: State is the connection state of the host
|
||||||
|
type: string
|
||||||
|
vmCount:
|
||||||
|
description: VMCount is the number of VMs on the host
|
||||||
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
status:
|
status:
|
||||||
description: VMwareHostStatus defines the observed state of VMwareHost
|
description: VMwareHostStatus defines the observed state of VMwareHost
|
||||||
|
properties:
|
||||||
|
esxiVersion:
|
||||||
|
description: ESXiVersion is the ESXi version retrieved via SSH if
|
||||||
|
connection succeeded
|
||||||
|
type: string
|
||||||
|
sshLastChecked:
|
||||||
|
description: SSHLastChecked is the timestamp of the last SSH validation
|
||||||
|
attempt
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
sshMessage:
|
||||||
|
description: SSHMessage contains details about the SSH validation
|
||||||
|
result or error
|
||||||
|
type: string
|
||||||
|
sshStatus:
|
||||||
|
description: SSHStatus is the SSH validation status for this host
|
||||||
|
(Succeeded, Failed, Pending)
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
served: true
|
served: true
|
||||||
@@ -2354,7 +2968,17 @@ spec:
|
|||||||
singular: vmwaremachine
|
singular: vmwaremachine
|
||||||
scope: Namespaced
|
scope: Namespaced
|
||||||
versions:
|
versions:
|
||||||
- name: v1alpha1
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.powerState
|
||||||
|
name: PowerState
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.migrated
|
||||||
|
name: Migrated
|
||||||
|
type: boolean
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2410,7 +3034,18 @@ spec:
|
|||||||
disks:
|
disks:
|
||||||
description: Disks is the list of disks for the virtual machine
|
description: Disks is the list of disks for the virtual machine
|
||||||
items:
|
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
|
type: array
|
||||||
esxiName:
|
esxiName:
|
||||||
description: ESXiName is the name of the ESXi host
|
description: ESXiName is the name of the ESXi host
|
||||||
@@ -2840,9 +3475,11 @@ rules:
|
|||||||
- apiGroups:
|
- apiGroups:
|
||||||
- vjailbreak.k8s.pf9.io
|
- vjailbreak.k8s.pf9.io
|
||||||
resources:
|
resources:
|
||||||
|
- arraycreds
|
||||||
- bmconfigs
|
- bmconfigs
|
||||||
- clustermigrations
|
- clustermigrations
|
||||||
- esximigrations
|
- esximigrations
|
||||||
|
- esxisshcreds
|
||||||
- migrationplans
|
- migrationplans
|
||||||
- migrations
|
- migrations
|
||||||
- migrationtemplates
|
- migrationtemplates
|
||||||
@@ -2869,9 +3506,11 @@ rules:
|
|||||||
- apiGroups:
|
- apiGroups:
|
||||||
- vjailbreak.k8s.pf9.io
|
- vjailbreak.k8s.pf9.io
|
||||||
resources:
|
resources:
|
||||||
|
- arraycreds/finalizers
|
||||||
- bmconfigs/finalizers
|
- bmconfigs/finalizers
|
||||||
- clustermigrations/finalizers
|
- clustermigrations/finalizers
|
||||||
- esximigrations/finalizers
|
- esximigrations/finalizers
|
||||||
|
- esxisshcreds/finalizers
|
||||||
- migrationplans/finalizers
|
- migrationplans/finalizers
|
||||||
- migrationtemplates/finalizers
|
- migrationtemplates/finalizers
|
||||||
- networkmappings/finalizers
|
- networkmappings/finalizers
|
||||||
@@ -2888,9 +3527,11 @@ rules:
|
|||||||
- apiGroups:
|
- apiGroups:
|
||||||
- vjailbreak.k8s.pf9.io
|
- vjailbreak.k8s.pf9.io
|
||||||
resources:
|
resources:
|
||||||
|
- arraycreds/status
|
||||||
- bmconfigs/status
|
- bmconfigs/status
|
||||||
- clustermigrations/status
|
- clustermigrations/status
|
||||||
- esximigrations/status
|
- esximigrations/status
|
||||||
|
- esxisshcreds/status
|
||||||
- migrationplans/status
|
- migrationplans/status
|
||||||
- migrations/status
|
- migrations/status
|
||||||
- migrationtemplates/status
|
- migrationtemplates/status
|
||||||
@@ -2903,6 +3544,7 @@ rules:
|
|||||||
- storagemappings/status
|
- storagemappings/status
|
||||||
- vjailbreaknodes/status
|
- vjailbreaknodes/status
|
||||||
- vmwarecreds/status
|
- vmwarecreds/status
|
||||||
|
- vmwarehosts/status
|
||||||
- vmwaremachines/status
|
- vmwaremachines/status
|
||||||
verbs:
|
verbs:
|
||||||
- get
|
- get
|
||||||
@@ -3749,6 +4391,12 @@ kind: Ingress
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: HTTP
|
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/rewrite-target: /$1
|
||||||
nginx.ingress.kubernetes.io/use-regex: "true"
|
nginx.ingress.kubernetes.io/use-regex: "true"
|
||||||
name: migration-vpwned-ingress
|
name: migration-vpwned-ingress
|
||||||
|
|||||||
@@ -20,6 +20,15 @@ spec:
|
|||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
|
volumeMounts:
|
||||||
|
- name: pf9-logs
|
||||||
|
mountPath: /var/log/pf9
|
||||||
|
readOnly: true
|
||||||
|
volumes:
|
||||||
|
- name: pf9-logs
|
||||||
|
hostPath:
|
||||||
|
path: /var/log/pf9
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
@@ -45,6 +54,12 @@ metadata:
|
|||||||
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
|
||||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||||
nginx.ingress.kubernetes.io/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:
|
spec:
|
||||||
ingressClassName: nginx
|
ingressClassName: nginx
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: kustomize
|
||||||
|
app.kubernetes.io/name: migration
|
||||||
|
control-plane: controller-manager
|
||||||
|
name: migration-controller-manager
|
||||||
|
namespace: migration-system
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
control-plane: controller-manager
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
kubectl.kubernetes.io/default-container: manager
|
||||||
|
labels:
|
||||||
|
control-plane: controller-manager
|
||||||
|
spec:
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: node-role.kubernetes.io/control-plane
|
||||||
|
operator: Exists
|
||||||
|
containers:
|
||||||
|
- args:
|
||||||
|
- --leader-elect=false
|
||||||
|
- --health-probe-bind-address=:8081
|
||||||
|
command:
|
||||||
|
- /manager
|
||||||
|
env:
|
||||||
|
- name: MAX_CONCURRENT_RECONCILES
|
||||||
|
value: "5"
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: pf9-env
|
||||||
|
image: quay.io/platform9/vjailbreak-controller:v0.4.1
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
lifecycle:
|
||||||
|
preStop:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- sleep 5
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 8081
|
||||||
|
initialDelaySeconds: 15
|
||||||
|
periodSeconds: 20
|
||||||
|
name: manager
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /readyz
|
||||||
|
port: 8081
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 200m
|
||||||
|
memory: 256Mi
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/pf9/k3s
|
||||||
|
name: master-token
|
||||||
|
- mountPath: /home/ubuntu
|
||||||
|
name: vddk
|
||||||
|
- mountPath: /etc/hosts
|
||||||
|
name: hosts-file
|
||||||
|
readOnly: true
|
||||||
|
dnsPolicy: ClusterFirstWithHostNet
|
||||||
|
hostNetwork: true
|
||||||
|
securityContext:
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsUser: 0
|
||||||
|
serviceAccountName: migration-controller-manager
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
volumes:
|
||||||
|
- hostPath:
|
||||||
|
path: /var/lib/rancher/k3s/server
|
||||||
|
type: Directory
|
||||||
|
name: master-token
|
||||||
|
- hostPath:
|
||||||
|
path: /home/ubuntu
|
||||||
|
type: Directory
|
||||||
|
name: vddk
|
||||||
|
- hostPath:
|
||||||
|
path: /etc/hosts
|
||||||
|
type: File
|
||||||
|
name: hosts-file
|
||||||
|
---
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: vpwned-sdk
|
||||||
|
name: migration-vpwned-sdk
|
||||||
|
namespace: migration-system
|
||||||
|
spec:
|
||||||
|
progressDeadlineSeconds: 600
|
||||||
|
replicas: 1
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: vpwned-sdk
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 25%
|
||||||
|
maxUnavailable: 25%
|
||||||
|
type: RollingUpdate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: vpwned-sdk
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: pf9-env
|
||||||
|
image: quay.io/platform9/vjailbreak-vpwned:v0.4.1
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
name: vpwned
|
||||||
|
ports:
|
||||||
|
- containerPort: 3001
|
||||||
|
protocol: TCP
|
||||||
|
resources: {}
|
||||||
|
terminationMessagePath: /dev/termination-log
|
||||||
|
terminationMessagePolicy: File
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/hosts
|
||||||
|
name: hosts-file
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /home/ubuntu
|
||||||
|
name: vddk-storage
|
||||||
|
dnsPolicy: ClusterFirst
|
||||||
|
restartPolicy: Always
|
||||||
|
schedulerName: default-scheduler
|
||||||
|
securityContext: {}
|
||||||
|
serviceAccountName: migration-controller-manager
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
volumes:
|
||||||
|
- hostPath:
|
||||||
|
path: /etc/hosts
|
||||||
|
type: File
|
||||||
|
name: hosts-file
|
||||||
|
- hostPath:
|
||||||
|
path: /home/ubuntu
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
name: vddk-storage
|
||||||
|
---
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: vjailbreak-ui
|
||||||
|
namespace: migration-system
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: vjailbreak-ui
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: vjailbreak-ui
|
||||||
|
spec:
|
||||||
|
serviceAccountName: migration-controller-manager
|
||||||
|
containers:
|
||||||
|
- name: vjailbreak-ui-container
|
||||||
|
image: quay.io/platform9/vjailbreak-ui:v0.4.1
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
volumeMounts:
|
||||||
|
- name: nginx-shadow-htpasswd
|
||||||
|
mountPath: /etc/nginx/shadow
|
||||||
|
- name: pf9-logs
|
||||||
|
mountPath: /var/log/pf9
|
||||||
|
readOnly: true
|
||||||
|
volumes:
|
||||||
|
- name: nginx-shadow-htpasswd
|
||||||
|
hostPath:
|
||||||
|
path: /etc/htpasswd
|
||||||
|
type: FileOrCreate
|
||||||
|
- name: pf9-logs
|
||||||
|
hostPath:
|
||||||
|
path: /var/log/pf9
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
---
|
||||||
+701
-7
@@ -9,6 +9,295 @@ metadata:
|
|||||||
---
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
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:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.17.1
|
controller-gen.kubebuilder.io/version: v0.17.1
|
||||||
@@ -391,6 +680,156 @@ spec:
|
|||||||
---
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.17.1
|
||||||
|
name: esxisshcreds.vjailbreak.k8s.pf9.io
|
||||||
|
spec:
|
||||||
|
group: vjailbreak.k8s.pf9.io
|
||||||
|
names:
|
||||||
|
kind: ESXiSSHCreds
|
||||||
|
listKind: ESXiSSHCredsList
|
||||||
|
plural: esxisshcreds
|
||||||
|
singular: esxisshcreds
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.validationStatus
|
||||||
|
name: Status
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.successfulHosts
|
||||||
|
name: Successful
|
||||||
|
type: integer
|
||||||
|
- jsonPath: .status.failedHosts
|
||||||
|
name: Failed
|
||||||
|
type: integer
|
||||||
|
- jsonPath: .status.totalHosts
|
||||||
|
name: Total
|
||||||
|
type: integer
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
ESXiSSHCreds is the Schema for the esxisshcreds API that defines SSH credentials
|
||||||
|
for connecting to ESXi hosts. It validates SSH connectivity to ESXi hosts either
|
||||||
|
discovered from vCenter via VMwareCreds or explicitly specified in the hosts list.
|
||||||
|
The controller validates connections in parallel with throttling to avoid overwhelming
|
||||||
|
the network, and reports per-host validation results in the status.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
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: ESXiSSHCredsSpec defines the desired state of ESXiSSHCreds
|
||||||
|
properties:
|
||||||
|
forceReconcileToken:
|
||||||
|
description: |-
|
||||||
|
ForceReconcileToken is an opaque token that can be updated to force a reconciliation.
|
||||||
|
Updating this field will increment metadata.generation and trigger the controller.
|
||||||
|
type: string
|
||||||
|
secretRef:
|
||||||
|
description: |-
|
||||||
|
SecretRef is the reference to the Kubernetes secret holding the SSH private key
|
||||||
|
The secret should contain a key named "privateKey" with the SSH private key in PEM format
|
||||||
|
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
|
||||||
|
username:
|
||||||
|
default: root
|
||||||
|
description: 'Username is the SSH username to use for connecting to
|
||||||
|
ESXi hosts (default: "root")'
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- secretRef
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ESXiSSHCredsStatus defines the observed state of ESXiSSHCreds
|
||||||
|
properties:
|
||||||
|
failedHosts:
|
||||||
|
description: FailedHosts is the number of ESXi hosts that failed validation
|
||||||
|
type: integer
|
||||||
|
lastValidationTime:
|
||||||
|
description: LastValidationTime is the timestamp of the last validation
|
||||||
|
run
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
successfulHosts:
|
||||||
|
description: SuccessfulHosts is the number of ESXi hosts that passed
|
||||||
|
validation
|
||||||
|
type: integer
|
||||||
|
totalHosts:
|
||||||
|
description: TotalHosts is the total number of ESXi hosts to validate
|
||||||
|
type: integer
|
||||||
|
validationMessage:
|
||||||
|
description: ValidationMessage is the message associated with the
|
||||||
|
overall validation
|
||||||
|
type: string
|
||||||
|
validationStatus:
|
||||||
|
description: |-
|
||||||
|
ValidationStatus is the overall status of the ESXi SSH validation
|
||||||
|
Possible values: Pending, Validating, Succeeded, PartiallySucceeded, Failed
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.17.1
|
controller-gen.kubebuilder.io/version: v0.17.1
|
||||||
@@ -408,6 +847,12 @@ spec:
|
|||||||
- jsonPath: .status.migrationStatus
|
- jsonPath: .status.migrationStatus
|
||||||
name: Status
|
name: Status
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.migrationTemplate
|
||||||
|
name: Migration Template
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -443,6 +888,11 @@ spec:
|
|||||||
description: AdvancedOptions is a list of advanced options for the
|
description: AdvancedOptions is a list of advanced options for the
|
||||||
migration
|
migration
|
||||||
properties:
|
properties:
|
||||||
|
acknowledgeNetworkConflictRisk:
|
||||||
|
description: AcknowledgeNetworkConflictRisk indicates that the
|
||||||
|
user acknowledges the risk of network conflicts when doing live
|
||||||
|
migration
|
||||||
|
type: boolean
|
||||||
granularNetworks:
|
granularNetworks:
|
||||||
description: GranularNetworks is a list of networks to be migrated
|
description: GranularNetworks is a list of networks to be migrated
|
||||||
items:
|
items:
|
||||||
@@ -471,6 +921,10 @@ spec:
|
|||||||
description: PeriodicSyncInterval is the interval at which the
|
description: PeriodicSyncInterval is the interval at which the
|
||||||
migration plan should be synced
|
migration plan should be synced
|
||||||
type: string
|
type: string
|
||||||
|
removeVMwareTools:
|
||||||
|
description: RemoveVMwareTools instructs the migration helper
|
||||||
|
to remove VMware Tools post migration
|
||||||
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
assignedIPsPerVM:
|
assignedIPsPerVM:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
@@ -491,6 +945,9 @@ spec:
|
|||||||
adminInitiatedCutOver:
|
adminInitiatedCutOver:
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
arrayOffload:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
dataCopyStart:
|
dataCopyStart:
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
@@ -507,6 +964,7 @@ spec:
|
|||||||
enum:
|
enum:
|
||||||
- hot
|
- hot
|
||||||
- cold
|
- cold
|
||||||
|
- mock
|
||||||
type: string
|
type: string
|
||||||
vmCutoverEnd:
|
vmCutoverEnd:
|
||||||
format: date-time
|
format: date-time
|
||||||
@@ -521,6 +979,34 @@ spec:
|
|||||||
description: MigrationTemplate is the template to be used for the
|
description: MigrationTemplate is the template to be used for the
|
||||||
migration
|
migration
|
||||||
type: string
|
type: string
|
||||||
|
networkOverridesPerVM:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
description: NICOverride defines per-NIC overrides for IP and
|
||||||
|
MAC preservation during migration
|
||||||
|
properties:
|
||||||
|
interfaceIndex:
|
||||||
|
description: InterfaceIndex is the zero-based index of the
|
||||||
|
NIC
|
||||||
|
type: integer
|
||||||
|
preserveIP:
|
||||||
|
description: |-
|
||||||
|
PreserveIP indicates whether to preserve the source VM's IP address for this NIC.
|
||||||
|
When nil the migration default (preserve) is used.
|
||||||
|
type: boolean
|
||||||
|
preserveMAC:
|
||||||
|
description: |-
|
||||||
|
PreserveMAC indicates whether to preserve the source VM's MAC address for this NIC.
|
||||||
|
When nil the migration default (preserve) is used.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- interfaceIndex
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
NetworkOverridesPerVM is a map of VM names to per-NIC network overrides
|
||||||
|
Only NICs with non-default settings (i.e., preserve=false) need to be listed
|
||||||
|
type: object
|
||||||
postMigrationAction:
|
postMigrationAction:
|
||||||
description: PostMigrationAction defines the post migration action
|
description: PostMigrationAction defines the post migration action
|
||||||
for the virtual machine
|
for the virtual machine
|
||||||
@@ -597,6 +1083,9 @@ spec:
|
|||||||
- jsonPath: .status.agentName
|
- jsonPath: .status.agentName
|
||||||
name: Agent Name
|
name: Agent Name
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.migrationPlan
|
||||||
|
name: MigrationPlan
|
||||||
|
type: string
|
||||||
- jsonPath: .metadata.creationTimestamp
|
- jsonPath: .metadata.creationTimestamp
|
||||||
name: Age
|
name: Age
|
||||||
type: date
|
type: date
|
||||||
@@ -647,6 +1136,18 @@ spec:
|
|||||||
migrationPlan:
|
migrationPlan:
|
||||||
description: MigrationPlan is the name of the migration plan
|
description: MigrationPlan is the name of the migration plan
|
||||||
type: string
|
type: string
|
||||||
|
migrationType:
|
||||||
|
description: MigrationType indicates whether this is a hot (live)
|
||||||
|
or cold migration
|
||||||
|
enum:
|
||||||
|
- hot
|
||||||
|
- cold
|
||||||
|
- mock
|
||||||
|
type: string
|
||||||
|
networkOverrides:
|
||||||
|
description: NetworkOverrides is the JSON-serialized per-NIC overrides
|
||||||
|
for IP and MAC preservation
|
||||||
|
type: string
|
||||||
podRef:
|
podRef:
|
||||||
description: PodRef is the name of the pod
|
description: PodRef is the name of the pod
|
||||||
type: string
|
type: string
|
||||||
@@ -713,6 +1214,11 @@ spec:
|
|||||||
- type
|
- type
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
currentDisk:
|
||||||
|
description: |-
|
||||||
|
CurrentDisk tracks which disk is currently being copied (e.g., "0", "1")
|
||||||
|
Extracted from migration pod events
|
||||||
|
type: string
|
||||||
phase:
|
phase:
|
||||||
description: Phase is the current phase of the migration
|
description: Phase is the current phase of the migration
|
||||||
enum:
|
enum:
|
||||||
@@ -728,7 +1234,28 @@ spec:
|
|||||||
- Succeeded
|
- Succeeded
|
||||||
- Failed
|
- Failed
|
||||||
- Unknown
|
- Unknown
|
||||||
|
- ConnectingToESXi
|
||||||
|
- CreatingInitiatorGroup
|
||||||
|
- CreatingVolume
|
||||||
|
- ImportingToCinder
|
||||||
|
- MappingVolume
|
||||||
|
- RescanningStorage
|
||||||
|
- XCOPYInProgress
|
||||||
type: string
|
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
|
||||||
|
syncWarningMessage:
|
||||||
|
description: |-
|
||||||
|
SyncWarningMessage contains the warning message when periodic sync is in a warning state.
|
||||||
|
If non-empty, indicates the sync failed but will auto-retry on next interval.
|
||||||
|
type: string
|
||||||
|
totalDisks:
|
||||||
|
description: TotalDisks is the total number of disks to be migrated
|
||||||
|
type: integer
|
||||||
required:
|
required:
|
||||||
- phase
|
- phase
|
||||||
type: object
|
type: object
|
||||||
@@ -784,6 +1311,11 @@ spec:
|
|||||||
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
|
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
|
||||||
including source/destination environments and mappings
|
including source/destination environments and mappings
|
||||||
properties:
|
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:
|
destination:
|
||||||
description: Destination is the destination details for the virtual
|
description: Destination is the destination details for the virtual
|
||||||
machine
|
machine
|
||||||
@@ -815,9 +1347,19 @@ spec:
|
|||||||
required:
|
required:
|
||||||
- vmwareRef
|
- vmwareRef
|
||||||
type: object
|
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:
|
storageMapping:
|
||||||
description: StorageMapping is the reference to the StorageMapping
|
description: |-
|
||||||
resource that defines source to destination storage mappings
|
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
|
type: string
|
||||||
targetPCDClusterName:
|
targetPCDClusterName:
|
||||||
description: TargetPCDClusterName is the name of the PCD cluster where
|
description: TargetPCDClusterName is the name of the PCD cluster where
|
||||||
@@ -839,7 +1381,6 @@ spec:
|
|||||||
- destination
|
- destination
|
||||||
- networkMapping
|
- networkMapping
|
||||||
- source
|
- source
|
||||||
- storageMapping
|
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
served: true
|
served: true
|
||||||
@@ -958,6 +1499,12 @@ spec:
|
|||||||
- jsonPath: .status.openstackValidationStatus
|
- jsonPath: .status.openstackValidationStatus
|
||||||
name: Status
|
name: Status
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.secretRef.name
|
||||||
|
name: Secret Name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -1049,6 +1596,26 @@ spec:
|
|||||||
- vcpus
|
- vcpus
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
osAuthToken:
|
||||||
|
type: string
|
||||||
|
osAuthUrl:
|
||||||
|
type: string
|
||||||
|
osDomainName:
|
||||||
|
type: string
|
||||||
|
osIdentityApiVersion:
|
||||||
|
type: string
|
||||||
|
osInsecure:
|
||||||
|
type: boolean
|
||||||
|
osInterface:
|
||||||
|
type: string
|
||||||
|
osPassword:
|
||||||
|
type: string
|
||||||
|
osRegionName:
|
||||||
|
type: string
|
||||||
|
osTenantName:
|
||||||
|
type: string
|
||||||
|
osUsername:
|
||||||
|
type: string
|
||||||
pcdHostConfig:
|
pcdHostConfig:
|
||||||
description: PCDHostConfig is the list of available clusters in openstack
|
description: PCDHostConfig is the list of available clusters in openstack
|
||||||
items:
|
items:
|
||||||
@@ -1131,6 +1698,10 @@ spec:
|
|||||||
openstack:
|
openstack:
|
||||||
description: Openstack is the OpenStack configuration for the openstackcreds
|
description: Openstack is the OpenStack configuration for the openstackcreds
|
||||||
properties:
|
properties:
|
||||||
|
backendVolumeTypeMap:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
networks:
|
networks:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
@@ -1585,6 +2156,11 @@ spec:
|
|||||||
description: AdvancedOptions is a list of advanced options for the
|
description: AdvancedOptions is a list of advanced options for the
|
||||||
migration
|
migration
|
||||||
properties:
|
properties:
|
||||||
|
acknowledgeNetworkConflictRisk:
|
||||||
|
description: AcknowledgeNetworkConflictRisk indicates that the
|
||||||
|
user acknowledges the risk of network conflicts when doing live
|
||||||
|
migration
|
||||||
|
type: boolean
|
||||||
granularNetworks:
|
granularNetworks:
|
||||||
description: GranularNetworks is a list of networks to be migrated
|
description: GranularNetworks is a list of networks to be migrated
|
||||||
items:
|
items:
|
||||||
@@ -1613,6 +2189,10 @@ spec:
|
|||||||
description: PeriodicSyncInterval is the interval at which the
|
description: PeriodicSyncInterval is the interval at which the
|
||||||
migration plan should be synced
|
migration plan should be synced
|
||||||
type: string
|
type: string
|
||||||
|
removeVMwareTools:
|
||||||
|
description: RemoveVMwareTools instructs the migration helper
|
||||||
|
to remove VMware Tools post migration
|
||||||
|
type: boolean
|
||||||
type: object
|
type: object
|
||||||
bmConfigRef:
|
bmConfigRef:
|
||||||
description: BMConfigRef is the reference to the BMC credentials
|
description: BMConfigRef is the reference to the BMC credentials
|
||||||
@@ -1719,6 +2299,9 @@ spec:
|
|||||||
adminInitiatedCutOver:
|
adminInitiatedCutOver:
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
arrayOffload:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
dataCopyStart:
|
dataCopyStart:
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
@@ -1735,6 +2318,7 @@ spec:
|
|||||||
enum:
|
enum:
|
||||||
- hot
|
- hot
|
||||||
- cold
|
- cold
|
||||||
|
- mock
|
||||||
type: string
|
type: string
|
||||||
vmCutoverEnd:
|
vmCutoverEnd:
|
||||||
format: date-time
|
format: date-time
|
||||||
@@ -2175,6 +2759,12 @@ spec:
|
|||||||
- jsonPath: .status.vmwareValidationStatus
|
- jsonPath: .status.vmwareValidationStatus
|
||||||
name: Status
|
name: Status
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .spec.secretRef.name
|
||||||
|
name: Secret Name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -2329,9 +2919,33 @@ spec:
|
|||||||
name:
|
name:
|
||||||
description: Name of the host
|
description: Name of the host
|
||||||
type: string
|
type: string
|
||||||
|
state:
|
||||||
|
description: State is the connection state of the host
|
||||||
|
type: string
|
||||||
|
vmCount:
|
||||||
|
description: VMCount is the number of VMs on the host
|
||||||
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
status:
|
status:
|
||||||
description: VMwareHostStatus defines the observed state of VMwareHost
|
description: VMwareHostStatus defines the observed state of VMwareHost
|
||||||
|
properties:
|
||||||
|
esxiVersion:
|
||||||
|
description: ESXiVersion is the ESXi version retrieved via SSH if
|
||||||
|
connection succeeded
|
||||||
|
type: string
|
||||||
|
sshLastChecked:
|
||||||
|
description: SSHLastChecked is the timestamp of the last SSH validation
|
||||||
|
attempt
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
sshMessage:
|
||||||
|
description: SSHMessage contains details about the SSH validation
|
||||||
|
result or error
|
||||||
|
type: string
|
||||||
|
sshStatus:
|
||||||
|
description: SSHStatus is the SSH validation status for this host
|
||||||
|
(Succeeded, Failed, Pending)
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
served: true
|
served: true
|
||||||
@@ -2354,7 +2968,17 @@ spec:
|
|||||||
singular: vmwaremachine
|
singular: vmwaremachine
|
||||||
scope: Namespaced
|
scope: Namespaced
|
||||||
versions:
|
versions:
|
||||||
- name: v1alpha1
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.powerState
|
||||||
|
name: PowerState
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.migrated
|
||||||
|
name: Migrated
|
||||||
|
type: boolean
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2410,7 +3034,18 @@ spec:
|
|||||||
disks:
|
disks:
|
||||||
description: Disks is the list of disks for the virtual machine
|
description: Disks is the list of disks for the virtual machine
|
||||||
items:
|
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
|
type: array
|
||||||
esxiName:
|
esxiName:
|
||||||
description: ESXiName is the name of the ESXi host
|
description: ESXiName is the name of the ESXi host
|
||||||
@@ -2840,9 +3475,11 @@ rules:
|
|||||||
- apiGroups:
|
- apiGroups:
|
||||||
- vjailbreak.k8s.pf9.io
|
- vjailbreak.k8s.pf9.io
|
||||||
resources:
|
resources:
|
||||||
|
- arraycreds
|
||||||
- bmconfigs
|
- bmconfigs
|
||||||
- clustermigrations
|
- clustermigrations
|
||||||
- esximigrations
|
- esximigrations
|
||||||
|
- esxisshcreds
|
||||||
- migrationplans
|
- migrationplans
|
||||||
- migrations
|
- migrations
|
||||||
- migrationtemplates
|
- migrationtemplates
|
||||||
@@ -2869,9 +3506,11 @@ rules:
|
|||||||
- apiGroups:
|
- apiGroups:
|
||||||
- vjailbreak.k8s.pf9.io
|
- vjailbreak.k8s.pf9.io
|
||||||
resources:
|
resources:
|
||||||
|
- arraycreds/finalizers
|
||||||
- bmconfigs/finalizers
|
- bmconfigs/finalizers
|
||||||
- clustermigrations/finalizers
|
- clustermigrations/finalizers
|
||||||
- esximigrations/finalizers
|
- esximigrations/finalizers
|
||||||
|
- esxisshcreds/finalizers
|
||||||
- migrationplans/finalizers
|
- migrationplans/finalizers
|
||||||
- migrationtemplates/finalizers
|
- migrationtemplates/finalizers
|
||||||
- networkmappings/finalizers
|
- networkmappings/finalizers
|
||||||
@@ -2888,9 +3527,11 @@ rules:
|
|||||||
- apiGroups:
|
- apiGroups:
|
||||||
- vjailbreak.k8s.pf9.io
|
- vjailbreak.k8s.pf9.io
|
||||||
resources:
|
resources:
|
||||||
|
- arraycreds/status
|
||||||
- bmconfigs/status
|
- bmconfigs/status
|
||||||
- clustermigrations/status
|
- clustermigrations/status
|
||||||
- esximigrations/status
|
- esximigrations/status
|
||||||
|
- esxisshcreds/status
|
||||||
- migrationplans/status
|
- migrationplans/status
|
||||||
- migrations/status
|
- migrations/status
|
||||||
- migrationtemplates/status
|
- migrationtemplates/status
|
||||||
@@ -2903,6 +3544,7 @@ rules:
|
|||||||
- storagemappings/status
|
- storagemappings/status
|
||||||
- vjailbreaknodes/status
|
- vjailbreaknodes/status
|
||||||
- vmwarecreds/status
|
- vmwarecreds/status
|
||||||
|
- vmwarehosts/status
|
||||||
- vmwaremachines/status
|
- vmwaremachines/status
|
||||||
verbs:
|
verbs:
|
||||||
- get
|
- get
|
||||||
@@ -3786,7 +4428,7 @@ spec:
|
|||||||
envFrom:
|
envFrom:
|
||||||
- configMapRef:
|
- configMapRef:
|
||||||
name: pf9-env
|
name: pf9-env
|
||||||
image: quay.io/platform9/vjailbreak-controller:v0.3.8
|
image: quay.io/platform9/vjailbreak-controller:v0.4.1
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
lifecycle:
|
lifecycle:
|
||||||
preStop:
|
preStop:
|
||||||
@@ -3869,7 +4511,7 @@ spec:
|
|||||||
- envFrom:
|
- envFrom:
|
||||||
- configMapRef:
|
- configMapRef:
|
||||||
name: pf9-env
|
name: pf9-env
|
||||||
image: quay.io/platform9/vjailbreak-vpwned:v0.3.8
|
image: quay.io/platform9/vjailbreak-vpwned:v0.4.1
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
name: vpwned
|
name: vpwned
|
||||||
ports:
|
ports:
|
||||||
@@ -3882,6 +4524,8 @@ spec:
|
|||||||
- mountPath: /etc/hosts
|
- mountPath: /etc/hosts
|
||||||
name: hosts-file
|
name: hosts-file
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
- mountPath: /home/ubuntu
|
||||||
|
name: vddk-storage
|
||||||
dnsPolicy: ClusterFirst
|
dnsPolicy: ClusterFirst
|
||||||
restartPolicy: Always
|
restartPolicy: Always
|
||||||
schedulerName: default-scheduler
|
schedulerName: default-scheduler
|
||||||
@@ -3893,12 +4537,22 @@ spec:
|
|||||||
path: /etc/hosts
|
path: /etc/hosts
|
||||||
type: File
|
type: File
|
||||||
name: hosts-file
|
name: hosts-file
|
||||||
|
- hostPath:
|
||||||
|
path: /home/ubuntu
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
name: vddk-storage
|
||||||
---
|
---
|
||||||
apiVersion: networking.k8s.io/v1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: HTTP
|
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/rewrite-target: /$1
|
||||||
nginx.ingress.kubernetes.io/use-regex: "true"
|
nginx.ingress.kubernetes.io/use-regex: "true"
|
||||||
name: migration-vpwned-ingress
|
name: migration-vpwned-ingress
|
||||||
@@ -3915,3 +4569,43 @@ spec:
|
|||||||
number: 80
|
number: 80
|
||||||
path: /dev-api/sdk/(.*)
|
path: /dev-api/sdk/(.*)
|
||||||
pathType: ImplementationSpecific
|
pathType: ImplementationSpecific
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: vjailbreak-ui
|
||||||
|
namespace: migration-system
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: vjailbreak-ui
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: vjailbreak-ui
|
||||||
|
spec:
|
||||||
|
serviceAccountName: migration-controller-manager
|
||||||
|
containers:
|
||||||
|
- name: vjailbreak-ui-container
|
||||||
|
image: quay.io/platform9/vjailbreak-ui:v0.4.1
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
volumeMounts:
|
||||||
|
- name: nginx-shadow-htpasswd
|
||||||
|
mountPath: /etc/nginx/shadow
|
||||||
|
- name: pf9-logs
|
||||||
|
mountPath: /var/log/pf9
|
||||||
|
readOnly: true
|
||||||
|
volumes:
|
||||||
|
- name: nginx-shadow-htpasswd
|
||||||
|
hostPath:
|
||||||
|
path: /etc/htpasswd
|
||||||
|
type: FileOrCreate
|
||||||
|
- name: pf9-logs
|
||||||
|
hostPath:
|
||||||
|
path: /var/log/pf9
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
---
|
||||||
@@ -22,5 +22,12 @@ data:
|
|||||||
DEPLOYMENT_NAME: vJailbreak
|
DEPLOYMENT_NAME: vJailbreak
|
||||||
PERIODIC_SYNC_MAX_RETRIES: "3" # max number of retries for CBT sync
|
PERIODIC_SYNC_MAX_RETRIES: "3" # max number of retries for CBT sync
|
||||||
PERIODIC_SYNC_RETRY_CAP: "3h" # max retry interval for CBT sync
|
PERIODIC_SYNC_RETRY_CAP: "3h" # max retry interval for CBT sync
|
||||||
AUTO_FSTAB_UPDATE: "false" # automatically update fstab
|
AUTO_FSTAB_UPDATE: "true" # automatically update fstab
|
||||||
AUTO_PXE_BOOT_ON_CONVERSION: "false" # automatically set machine to PXE boot during cluster conversion
|
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"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
# v0.4.1
|
||||||
|
|
||||||
|
- **Tag:** `v0.4.1`
|
||||||
|
- **Published:** 2026-03-03T08:32:13Z
|
||||||
|
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.1
|
||||||
|
|
||||||
|
## Release Notes
|
||||||
|
|
||||||
|
## What's Changed
|
||||||
|
* upgarde core components by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1458
|
||||||
|
* Network Persistence For Windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1408
|
||||||
|
* increase QPS for kubernetes client in proxy pod by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1460
|
||||||
|
* Fixed - v2v build failure by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1471
|
||||||
|
* Added s3 URL artifact to build outputs (release) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1464
|
||||||
|
* Push image on S3 only for release, nightly and manual triggers by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1474
|
||||||
|
* Added option to migrate a vm without powering off the source vm by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1472
|
||||||
|
* Fixed the variable issue in v2v helper by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1476
|
||||||
|
* Added downloadable s3 url for qcow2 images by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1475
|
||||||
|
* #1451 :: Remove data copy method and cutover options from adavance options when user selects storage accelerated copy by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1473
|
||||||
|
* Install latest golang and libnbd-devel in Dockerfile by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1485
|
||||||
|
* chore: upgrade grafana by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1483
|
||||||
|
* user experience enhancements (download logs) by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1486
|
||||||
|
* add pre-commit hooks for lint and YAML generator by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1494
|
||||||
|
* Use GitHub repository variables for S3 bucket names and region in CI workflow by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1488
|
||||||
|
* Added manual pre-release workflow for CRD and installer generation by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1489
|
||||||
|
* add backoff for migration pod checking logs by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1396
|
||||||
|
* #1454 :: Deselecting the advanced option does not reset the UI to its original state by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1477
|
||||||
|
* Replace pre-baked Ubuntu base image with Ubuntu Minimal and automate K3s/Helm installation by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1496
|
||||||
|
* firstboot scheduling windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1500
|
||||||
|
* Run upgrade process as a job by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1467
|
||||||
|
* Removed extra logging by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1490
|
||||||
|
* pin golang lint version by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1517
|
||||||
|
* fix: continue network discovery even for orphaned networks by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1457
|
||||||
|
* #1515 :: UI Bug: “Start Conversion” Button Not Enabled in Rolling Cluster Conversion Form by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1516
|
||||||
|
* #1398 :: Reorganize Main Menu into Two-Level Structure by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1512
|
||||||
|
* replace grafana yamls by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1521
|
||||||
|
* add more printcolumns by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1522
|
||||||
|
* Apply PostMigrationAction for all migrations in a batch by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1492
|
||||||
|
* Support duplicate VM names by using vCenter MOID as a unique identifier by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1523
|
||||||
|
* fix nginx grafana by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1526
|
||||||
|
* Keep icons consistent in all the pages by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1530
|
||||||
|
* #1450 :: UI is not allowing to delete auto discovered storage mapping by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1470
|
||||||
|
* Revert #1523: Remove duplicate vm name changes by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1535
|
||||||
|
* Add ssh validate CR for key validation by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1505
|
||||||
|
* Removed extra logs showing repeated 0% by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1536
|
||||||
|
* Add necessary tools for easier debug ability by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1538
|
||||||
|
* Cluster Conversion: fix the capacity check for esxi hosts by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1504
|
||||||
|
* #1506 :: Create New Page for ESXi SSH Key Management by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1539
|
||||||
|
* fix - Firstboot script for nic recovery is not running and errors on specific windows versions by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1534
|
||||||
|
* add esxi details by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1525
|
||||||
|
* Resolve UI synchronization lag during Admin Cutover by refining MigrationPlan predicates by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1542
|
||||||
|
* Introduce warning error states during periodic sync so that customer can take necessary steps by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1497
|
||||||
|
* Feature/option not to preserve ip and mac by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1511
|
||||||
|
* Fixed retry mechanism by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1544
|
||||||
|
* backend volume type validations by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1498
|
||||||
|
* fix: scope VM validation to non-terminal states and harden post-migration actions by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1549
|
||||||
|
* Create esxi ssh cr while configuring esxi ssh key. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1558
|
||||||
|
* bake virtio 0.1.185 for windows server 2012 by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1425
|
||||||
|
* script to remove log files regarding vmwaretools,vmware etc by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1547
|
||||||
|
* Added advanced option to run vmware removal script with just a check in the migration form by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1550
|
||||||
|
* user firstboot fix by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1569
|
||||||
|
* #1545 : UI - Redirect to the first sub item upon clicking the Item in the sidebar by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1570
|
||||||
|
* fix: adding a timestamp measure to ensure the latest version is fetched for vddk version by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1562
|
||||||
|
* skip deletion of vmwaremachine that was migrated and renamed by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1566
|
||||||
|
* fix generate-mount-persistence invocation for multi-disk by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1564
|
||||||
|
* Remove irrelevent filters on ESXi SSH Credentials page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1567
|
||||||
|
* #1510 :: UI Request option to NOT preserve the IP address and MAC address to allow migration to a different subnet by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1557
|
||||||
|
* #1443 : Add Storage accelerated copy related information in migration details for storage mapping (currently showing NA) by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1571
|
||||||
|
* UI: Fix rdm configure tab in migration form by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1576
|
||||||
|
* #1574: Update Tour Popup Messaging for Separate VMware and PCD Pages by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1579
|
||||||
|
* fix: on empty IP create only port group else route the standard way by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1573
|
||||||
|
* fix: Migration phase skips CopyingChangedBlocks/ConvertingDisk after admin cutover by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1585
|
||||||
|
* guestfish run fix, fix grub bootloader by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1586
|
||||||
|
* Net persist patch by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1589
|
||||||
|
* Remove 2 errors on UI for rdm form and add a warning dialog box if wrong selected by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1590
|
||||||
|
* Injected Disk-Online script into the codebase and enhanced tool removal script for win2012 by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1578
|
||||||
|
* fix: custom IP is not applied for no preserve IP and no preserve MAC by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1597
|
||||||
|
* #1583 : Cannot remove assign IP post a new IP is applied by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1592
|
||||||
|
* Include resourceVersion when updating ESXi SSH credentials by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1605
|
||||||
|
* fix: adding dhcp search for no ip by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1481
|
||||||
|
* Revert fix generate-mount-persistence invocation for multi-disk by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1606
|
||||||
|
* Continue after failure Firstboot Schduling for windows firstboot by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1604
|
||||||
|
* Interface Name preservation by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1609
|
||||||
|
* Disable github hook on pre-release commit by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1613
|
||||||
|
* chore: Pre-release CRD generation for v0.4.1 by @github-actions[bot] in https://github.com/platform9/vjailbreak/pull/1614
|
||||||
|
* Use Cloud image instead of minimal ubuntu by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1618
|
||||||
|
* Update nginx ingress and prometheus alert manager images ( release ) by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1619
|
||||||
|
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.0...v0.4.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Upgrade Guide: v0.4.0 → v0.4.1
|
||||||
|
Users upgrading from v0.4.0 to v0.4.1 needs to follow the steps below:
|
||||||
|
|
||||||
|
- #### Step 1: Update v0.4.0 Container Images
|
||||||
|
|
||||||
|
In your existing v0.4.0 setup, update the deployment images to pull the latest v0.4.0 containers and set imagePullPolicy to Always with the below command given.
|
||||||
|
```
|
||||||
|
kubectl patch deployment migration-controller-manager -n migration-system --type='json' \
|
||||||
|
-p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}]' && \
|
||||||
|
kubectl patch deployment migration-vpwned-sdk -n migration-system --type='json' \
|
||||||
|
-p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}]' && \
|
||||||
|
kubectl patch deployment vjailbreak-ui -n migration-system --type='json' \
|
||||||
|
-p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}]'
|
||||||
|
```
|
||||||
|
|
||||||
|
- #### Step 2: Restart Deployments
|
||||||
|
|
||||||
|
Restart the deployments to ensure the updated images are pulled and running:
|
||||||
|
```
|
||||||
|
kubectl rollout restart deployment -n migration-system
|
||||||
|
- #### Step 3: Follow Upgrade Steps from the [public documentation](https://platform9.github.io/vjailbreak/guides/how-to/upgrade_vjailbreak/)
|
||||||
Reference in New Issue
Block a user