Compare commits

...
3 Commits
Author SHA1 Message Date
OmkarDeshpande7 3900860634 Add release v0.4.4 2026-09-15 22:49:45 +05:30
OmkarDeshpande7 7f1a95392f Add release v0.4.3 2026-09-15 22:49:36 +05:30
OmkarDeshpande7 1fe88517ca Add release v0.4.2 2026-09-15 22:49:26 +05:30
10 changed files with 1080 additions and 17 deletions
+422 -4
View File
@@ -71,6 +71,22 @@ spec:
description: AutoDiscovered indicates if this ArrayCreds was auto-discovered description: AutoDiscovered indicates if this ArrayCreds was auto-discovered
from OpenStack from OpenStack
type: boolean type: boolean
netAppConfig:
description: |-
NetAppConfig holds NetApp-specific configuration. Required when
VendorType is "netapp" before a migration can run. May be left empty
at creation time so the controller can surface available SVMs/FlexVols
on status.backendTargets for interactive selection.
properties:
flexVol:
description: FlexVol is the FlexVol name (within the SVM) where
LUNs will be created.
type: string
svm:
description: SVM is the Storage Virtual Machine name that owns
the target FlexVol.
type: string
type: object
openstackMapping: openstackMapping:
description: OpenStackMapping is the openstack mapping for this array description: OpenStackMapping is the openstack mapping for this array
properties: properties:
@@ -159,6 +175,38 @@ spec:
ArrayValidationStatus is the status of the storage array validation ArrayValidationStatus is the status of the storage array validation
Possible values: Pending, Succeeded, Failed, AwaitingCredentials Possible values: Pending, Succeeded, Failed, AwaitingCredentials
type: string type: string
backendTargets:
description: |-
BackendTargets is a vendor-neutral two-level tree of selectable array
targets (e.g., NetApp SVMs -> FlexVols). Populated by the controller
after successful credential validation for vendors that expose a
selectable target hierarchy. UIs consume this to render a picker.
items:
description: BackendTargetGroup groups related targets (e.g., a
NetApp SVM and its FlexVols).
properties:
children:
items:
description: |-
BackendTarget is a single selectable target within a BackendTargetGroup
(e.g., a NetApp FlexVol, a Dell pool).
properties:
name:
type: string
uuid:
type: string
required:
- name
type: object
type: array
name:
type: string
uuid:
type: string
required:
- name
type: object
type: array
dataStore: dataStore:
description: DataStore is the list of datastores associated with this description: DataStore is the list of datastores associated with this
array array
@@ -195,7 +243,7 @@ spec:
phase: phase:
description: |- description: |-
Phase indicates the current phase of the ArrayCreds Phase indicates the current phase of the ArrayCreds
Possible values: Discovered, Configured, Validated, Failed Possible values: Discovered, Configured, Validated, Failed, NeedsBackendSelection
type: string type: string
type: object type: object
type: object type: object
@@ -909,6 +957,12 @@ spec:
items: items:
type: string type: string
type: array type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence: networkPersistence:
description: NetworkPersistence instructs the migration helper description: NetworkPersistence instructs the migration helper
to persist the source networking configuration to persist the source networking configuration
@@ -985,6 +1039,8 @@ spec:
description: NICOverride defines per-NIC overrides for IP and description: NICOverride defines per-NIC overrides for IP and
MAC preservation during migration MAC preservation during migration
properties: properties:
UserAssignedIP:
type: string
interfaceIndex: interfaceIndex:
description: InterfaceIndex is the zero-based index of the description: InterfaceIndex is the zero-based index of the
NIC NIC
@@ -1130,6 +1186,13 @@ spec:
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
after a successful migration to prevent network conflicts. Defaults to false. after a successful migration to prevent network conflicts. Defaults to false.
type: boolean type: boolean
imageMetadata:
additionalProperties:
type: string
description: |-
ImageMetadata is the merged map of Cinder volume_image_metadata properties resolved
from the MigrationPlan's selected VolumeImageProfiles after OS-family filtering.
type: object
initiateCutover: initiateCutover:
description: InitiateCutover is the flag to initiate cutover description: InitiateCutover is the flag to initiate cutover
type: boolean type: boolean
@@ -1704,7 +1767,19 @@ spec:
type: object type: object
networks: networks:
items: items:
type: string description: PCDNetworkInfo is struct to hold network information
for PCD
properties:
name:
type: string
tags:
items:
type: string
type: array
required:
- name
- tags
type: object
type: array type: array
securityGroups: securityGroups:
items: items:
@@ -2177,6 +2252,12 @@ spec:
items: items:
type: string type: string
type: array type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence: networkPersistence:
description: NetworkPersistence instructs the migration helper description: NetworkPersistence instructs the migration helper
to persist the source networking configuration to persist the source networking configuration
@@ -2663,7 +2744,7 @@ spec:
(e.g., Provisioning, Ready, Error, Decommissioning) (e.g., Provisioning, Ready, Error, Decommissioning)
type: string type: string
vmIP: vmIP:
description: VMIP is the IP address of the VM description: VMIP is the IP address of the VM
type: string type: string
required: required:
- vmIP - vmIP
@@ -3104,11 +3185,15 @@ spec:
machine. machine.
properties: properties:
ipAddress: ipAddress:
type: string items:
type: string
type: array
mac: mac:
type: string type: string
network: network:
type: string type: string
networkType:
type: string
order: order:
type: integer type: integer
type: object type: object
@@ -3131,6 +3216,10 @@ spec:
vmState: vmState:
description: VMState is the state of the virtual machine description: VMState is the state of the virtual machine
type: string type: string
vmid:
description: VMID is the vCenter Managed Object ID (MOID) of the
virtual machine
type: string
required: required:
- name - name
type: object type: object
@@ -3154,6 +3243,81 @@ spec:
subresources: subresources:
status: {} status: {}
--- ---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: volumeimageprofiles.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VolumeImageProfile
listKind: VolumeImageProfileList
plural: volumeimageprofiles
singular: volumeimageprofile
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.osFamily
name: OSFamily
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VolumeImageProfile defines a reusable set of Cinder volume_image_metadata properties
that can be applied to VM volumes during 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: VolumeImageProfileSpec defines the desired state of VolumeImageProfile
properties:
description:
description: Description will indicate the usage context of this profile
type: string
osFamily:
description: OSFamily scopes this profile to a specific VMware guest
family.
enum:
- windowsGuest
- linuxGuest
- any
type: string
properties:
additionalProperties:
type: string
description: Properties is the map of Cinder volume image metadata
key-value pairs
type: object
required:
- osFamily
- properties
type: object
type: object
served: true
storage: true
subresources: {}
---
apiVersion: v1 apiVersion: v1
kind: ServiceAccount kind: ServiceAccount
metadata: metadata:
@@ -4413,4 +4577,258 @@ spec:
number: 80 number: 80
path: /dev-api/sdk/(.*) path: /dev-api/sdk/(.*)
pathType: ImplementationSpecific pathType: ImplementationSpecific
---
apiVersion: v1
kind: Service
metadata:
name: vjailbreak-ui-service
namespace: migration-system
spec:
selector:
app: vjailbreak-ui
type: ClusterIP
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vjailbreak-ui-ingress
namespace: migration-system
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: vjailbreak-ui-service
port:
number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vjailbreak-api-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /(apis.*)
pathType: ImplementationSpecific
backend:
service:
name: kubernetes
port:
number: 443
- path: /(api.*)
pathType: ImplementationSpecific
backend:
service:
name: kubernetes
port:
number: 443
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-api-ingress
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: ui-manager-sa
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ui-manager-role
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- get
- list
- patch
- update
- apiGroups:
- ""
resources:
- configmaps
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- patch
- apiGroups:
- ""
resources:
- configmaps/status
- pods/status
verbs:
- get
- apiGroups:
- ""
resources:
- events
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- list
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds
- arraycredsmappings
- bmconfigs
- esxisshcreds
- clustermigrations
- esximigrations
- migrationplans
- migrations
- migrationtemplates
- networkmappings
- openstackcreds
- pcdclusters
- pcdhosts
- rdmdisks
- rollingmigrationplans
- storagemappings
- vjailbreaknodes
- vmwareclusters
- vmwarecreds
- vmwarehosts
- vmwaremachines
- volumeimageprofiles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/finalizers
- arraycredsmappings/finalizers
- bmconfigs/finalizers
- esxisshcreds/finalizers
- clustermigrations/finalizers
- esximigrations/finalizers
- migrationplans/finalizers
- migrationtemplates/finalizers
- networkmappings/finalizers
- openstackcreds/finalizers
- pcdclusters/finalizers
- pcdhosts/finalizers
- rdmdisks/finalizers
- rollingmigrationplans/finalizers
- storagemappings/finalizers
- vjailbreaknodes/finalizers
- vmwarecreds/finalizers
verbs:
- update
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/status
- arraycredsmappings/status
- bmconfigs/status
- esxisshcreds/status
- clustermigrations/status
- esximigrations/status
- migrationplans/status
- migrations/status
- migrationtemplates/status
- networkmappings/status
- openstackcreds/status
- pcdclusters/status
- pcdhosts/status
- rdmdisks/status
- rollingmigrationplans/status
- storagemappings/status
- vjailbreaknodes/status
- vmwarecreds/status
- vmwaremachines/status
verbs:
- get
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: ui-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ui-manager-role
subjects:
- kind: ServiceAccount
name: ui-manager-sa
namespace: migration-system
--- ---
+12 -1
View File
@@ -41,7 +41,7 @@ spec:
envFrom: envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-controller:v0.4.1 image: quay.io/platform9/vjailbreak-controller:v0.4.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
lifecycle: lifecycle:
preStop: preStop:
@@ -75,6 +75,13 @@ spec:
- mountPath: /etc/hosts - mountPath: /etc/hosts
name: hosts-file name: hosts-file
readOnly: true readOnly: true
- mountPath: /host/dmi/product_uuid
name: dmi-product-uuid
readOnly: true
dnsConfig:
options:
- name: ndots
value: "1"
dnsPolicy: ClusterFirstWithHostNet dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true hostNetwork: true
securityContext: securityContext:
@@ -95,4 +102,8 @@ spec:
path: /etc/hosts path: /etc/hosts
type: File type: File
name: hosts-file name: hosts-file
- hostPath:
path: /sys/class/dmi/id/product_uuid
type: File
name: dmi-product-uuid
--- ---
+5 -1
View File
@@ -27,7 +27,7 @@ spec:
- envFrom: - envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.4.1 image: quay.io/platform9/vjailbreak-vpwned:v0.4.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: vpwned name: vpwned
ports: ports:
@@ -42,6 +42,10 @@ spec:
readOnly: true readOnly: true
- mountPath: /home/ubuntu - mountPath: /home/ubuntu
name: vddk-storage name: vddk-storage
dnsConfig:
options:
- name: ndots
value: "1"
dnsPolicy: ClusterFirst dnsPolicy: ClusterFirst
restartPolicy: Always restartPolicy: Always
schedulerName: default-scheduler schedulerName: default-scheduler
+10 -2
View File
@@ -1,3 +1,4 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -13,10 +14,17 @@ spec:
labels: labels:
app: vjailbreak-ui app: vjailbreak-ui
spec: spec:
serviceAccountName: migration-controller-manager affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
serviceAccountName: ui-manager-sa
containers: containers:
- name: vjailbreak-ui-container - name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.1 image: quay.io/platform9/vjailbreak-ui:v0.4.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- containerPort: 80 - containerPort: 80
+446 -8
View File
@@ -71,6 +71,22 @@ spec:
description: AutoDiscovered indicates if this ArrayCreds was auto-discovered description: AutoDiscovered indicates if this ArrayCreds was auto-discovered
from OpenStack from OpenStack
type: boolean type: boolean
netAppConfig:
description: |-
NetAppConfig holds NetApp-specific configuration. Required when
VendorType is "netapp" before a migration can run. May be left empty
at creation time so the controller can surface available SVMs/FlexVols
on status.backendTargets for interactive selection.
properties:
flexVol:
description: FlexVol is the FlexVol name (within the SVM) where
LUNs will be created.
type: string
svm:
description: SVM is the Storage Virtual Machine name that owns
the target FlexVol.
type: string
type: object
openstackMapping: openstackMapping:
description: OpenStackMapping is the openstack mapping for this array description: OpenStackMapping is the openstack mapping for this array
properties: properties:
@@ -159,6 +175,38 @@ spec:
ArrayValidationStatus is the status of the storage array validation ArrayValidationStatus is the status of the storage array validation
Possible values: Pending, Succeeded, Failed, AwaitingCredentials Possible values: Pending, Succeeded, Failed, AwaitingCredentials
type: string type: string
backendTargets:
description: |-
BackendTargets is a vendor-neutral two-level tree of selectable array
targets (e.g., NetApp SVMs -> FlexVols). Populated by the controller
after successful credential validation for vendors that expose a
selectable target hierarchy. UIs consume this to render a picker.
items:
description: BackendTargetGroup groups related targets (e.g., a
NetApp SVM and its FlexVols).
properties:
children:
items:
description: |-
BackendTarget is a single selectable target within a BackendTargetGroup
(e.g., a NetApp FlexVol, a Dell pool).
properties:
name:
type: string
uuid:
type: string
required:
- name
type: object
type: array
name:
type: string
uuid:
type: string
required:
- name
type: object
type: array
dataStore: dataStore:
description: DataStore is the list of datastores associated with this description: DataStore is the list of datastores associated with this
array array
@@ -195,7 +243,7 @@ spec:
phase: phase:
description: |- description: |-
Phase indicates the current phase of the ArrayCreds Phase indicates the current phase of the ArrayCreds
Possible values: Discovered, Configured, Validated, Failed Possible values: Discovered, Configured, Validated, Failed, NeedsBackendSelection
type: string type: string
type: object type: object
type: object type: object
@@ -909,6 +957,12 @@ spec:
items: items:
type: string type: string
type: array type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence: networkPersistence:
description: NetworkPersistence instructs the migration helper description: NetworkPersistence instructs the migration helper
to persist the source networking configuration to persist the source networking configuration
@@ -985,6 +1039,8 @@ spec:
description: NICOverride defines per-NIC overrides for IP and description: NICOverride defines per-NIC overrides for IP and
MAC preservation during migration MAC preservation during migration
properties: properties:
UserAssignedIP:
type: string
interfaceIndex: interfaceIndex:
description: InterfaceIndex is the zero-based index of the description: InterfaceIndex is the zero-based index of the
NIC NIC
@@ -1130,6 +1186,13 @@ spec:
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
after a successful migration to prevent network conflicts. Defaults to false. after a successful migration to prevent network conflicts. Defaults to false.
type: boolean type: boolean
imageMetadata:
additionalProperties:
type: string
description: |-
ImageMetadata is the merged map of Cinder volume_image_metadata properties resolved
from the MigrationPlan's selected VolumeImageProfiles after OS-family filtering.
type: object
initiateCutover: initiateCutover:
description: InitiateCutover is the flag to initiate cutover description: InitiateCutover is the flag to initiate cutover
type: boolean type: boolean
@@ -1704,7 +1767,19 @@ spec:
type: object type: object
networks: networks:
items: items:
type: string description: PCDNetworkInfo is struct to hold network information
for PCD
properties:
name:
type: string
tags:
items:
type: string
type: array
required:
- name
- tags
type: object
type: array type: array
securityGroups: securityGroups:
items: items:
@@ -2177,6 +2252,12 @@ spec:
items: items:
type: string type: string
type: array type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence: networkPersistence:
description: NetworkPersistence instructs the migration helper description: NetworkPersistence instructs the migration helper
to persist the source networking configuration to persist the source networking configuration
@@ -2663,7 +2744,7 @@ spec:
(e.g., Provisioning, Ready, Error, Decommissioning) (e.g., Provisioning, Ready, Error, Decommissioning)
type: string type: string
vmIP: vmIP:
description: VMIP is the IP address of the VM description: VMIP is the IP address of the VM
type: string type: string
required: required:
- vmIP - vmIP
@@ -3104,11 +3185,15 @@ spec:
machine. machine.
properties: properties:
ipAddress: ipAddress:
type: string items:
type: string
type: array
mac: mac:
type: string type: string
network: network:
type: string type: string
networkType:
type: string
order: order:
type: integer type: integer
type: object type: object
@@ -3131,6 +3216,10 @@ spec:
vmState: vmState:
description: VMState is the state of the virtual machine description: VMState is the state of the virtual machine
type: string type: string
vmid:
description: VMID is the vCenter Managed Object ID (MOID) of the
virtual machine
type: string
required: required:
- name - name
type: object type: object
@@ -3154,6 +3243,81 @@ spec:
subresources: subresources:
status: {} status: {}
--- ---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: volumeimageprofiles.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VolumeImageProfile
listKind: VolumeImageProfileList
plural: volumeimageprofiles
singular: volumeimageprofile
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.osFamily
name: OSFamily
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VolumeImageProfile defines a reusable set of Cinder volume_image_metadata properties
that can be applied to VM volumes during 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: VolumeImageProfileSpec defines the desired state of VolumeImageProfile
properties:
description:
description: Description will indicate the usage context of this profile
type: string
osFamily:
description: OSFamily scopes this profile to a specific VMware guest
family.
enum:
- windowsGuest
- linuxGuest
- any
type: string
properties:
additionalProperties:
type: string
description: Properties is the map of Cinder volume image metadata
key-value pairs
type: object
required:
- osFamily
- properties
type: object
type: object
served: true
storage: true
subresources: {}
---
apiVersion: v1 apiVersion: v1
kind: ServiceAccount kind: ServiceAccount
metadata: metadata:
@@ -4428,7 +4592,7 @@ spec:
envFrom: envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-controller:v0.4.1 image: quay.io/platform9/vjailbreak-controller:v0.4.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
lifecycle: lifecycle:
preStop: preStop:
@@ -4462,6 +4626,13 @@ spec:
- mountPath: /etc/hosts - mountPath: /etc/hosts
name: hosts-file name: hosts-file
readOnly: true readOnly: true
- mountPath: /host/dmi/product_uuid
name: dmi-product-uuid
readOnly: true
dnsConfig:
options:
- name: ndots
value: "1"
dnsPolicy: ClusterFirstWithHostNet dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true hostNetwork: true
securityContext: securityContext:
@@ -4482,6 +4653,10 @@ spec:
path: /etc/hosts path: /etc/hosts
type: File type: File
name: hosts-file name: hosts-file
- hostPath:
path: /sys/class/dmi/id/product_uuid
type: File
name: dmi-product-uuid
--- ---
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
@@ -4511,7 +4686,7 @@ spec:
- envFrom: - envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.4.1 image: quay.io/platform9/vjailbreak-vpwned:v0.4.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: vpwned name: vpwned
ports: ports:
@@ -4526,6 +4701,10 @@ spec:
readOnly: true readOnly: true
- mountPath: /home/ubuntu - mountPath: /home/ubuntu
name: vddk-storage name: vddk-storage
dnsConfig:
options:
- name: ndots
value: "1"
dnsPolicy: ClusterFirst dnsPolicy: ClusterFirst
restartPolicy: Always restartPolicy: Always
schedulerName: default-scheduler schedulerName: default-scheduler
@@ -4586,10 +4765,17 @@ spec:
labels: labels:
app: vjailbreak-ui app: vjailbreak-ui
spec: spec:
serviceAccountName: migration-controller-manager affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
serviceAccountName: ui-manager-sa
containers: containers:
- name: vjailbreak-ui-container - name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.1 image: quay.io/platform9/vjailbreak-ui:v0.4.4
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- containerPort: 80 - containerPort: 80
@@ -4609,3 +4795,255 @@ spec:
path: /var/log/pf9 path: /var/log/pf9
type: DirectoryOrCreate type: DirectoryOrCreate
--- ---
apiVersion: v1
kind: Service
metadata:
name: vjailbreak-ui-service
namespace: migration-system
spec:
selector:
app: vjailbreak-ui
type: ClusterIP
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vjailbreak-ui-ingress
namespace: migration-system
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: vjailbreak-ui-service
port:
number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vjailbreak-api-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /(apis.*)
pathType: ImplementationSpecific
backend:
service:
name: kubernetes
port:
number: 443
- path: /(api.*)
pathType: ImplementationSpecific
backend:
service:
name: kubernetes
port:
number: 443
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-api-ingress
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: ui-manager-sa
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ui-manager-role
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- get
- list
- patch
- update
- apiGroups:
- ""
resources:
- configmaps
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- patch
- apiGroups:
- ""
resources:
- configmaps/status
- pods/status
verbs:
- get
- apiGroups:
- ""
resources:
- events
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- list
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds
- arraycredsmappings
- bmconfigs
- esxisshcreds
- clustermigrations
- esximigrations
- migrationplans
- migrations
- migrationtemplates
- networkmappings
- openstackcreds
- pcdclusters
- pcdhosts
- rdmdisks
- rollingmigrationplans
- storagemappings
- vjailbreaknodes
- vmwareclusters
- vmwarecreds
- vmwarehosts
- vmwaremachines
- volumeimageprofiles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/finalizers
- arraycredsmappings/finalizers
- bmconfigs/finalizers
- esxisshcreds/finalizers
- clustermigrations/finalizers
- esximigrations/finalizers
- migrationplans/finalizers
- migrationtemplates/finalizers
- networkmappings/finalizers
- openstackcreds/finalizers
- pcdclusters/finalizers
- pcdhosts/finalizers
- rdmdisks/finalizers
- rollingmigrationplans/finalizers
- storagemappings/finalizers
- vjailbreaknodes/finalizers
- vmwarecreds/finalizers
verbs:
- update
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/status
- arraycredsmappings/status
- bmconfigs/status
- esxisshcreds/status
- clustermigrations/status
- esximigrations/status
- migrationplans/status
- migrations/status
- migrationtemplates/status
- networkmappings/status
- openstackcreds/status
- pcdclusters/status
- pcdhosts/status
- rdmdisks/status
- rollingmigrationplans/status
- storagemappings/status
- vjailbreaknodes/status
- vmwarecreds/status
- vmwaremachines/status
verbs:
- get
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: ui-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ui-manager-role
subjects:
- kind: ServiceAccount
name: ui-manager-sa
namespace: migration-system
+27
View File
@@ -0,0 +1,27 @@
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: VolumeImageProfile
metadata:
name: default-windows
namespace: migration-system
spec:
osFamily: windowsGuest
description: Default profile for Windows VMs
properties:
hw_qemu_guest_agent: "yes"
hw_video_model: virtio
hw_pointer_model: usbtablet
hw_disk_bus: virtio
os_type: windows
---
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: VolumeImageProfile
metadata:
name: default-linux
namespace: migration-system
spec:
osFamily: linuxGuest
description: Default profile for Linux VMs
properties:
hw_qemu_guest_agent: "yes"
hw_video_model: virtio
hw_pointer_model: usbtablet
@@ -30,4 +30,5 @@ data:
V2V_HELPER_POD_MEMORY_LIMIT: "5Gi" V2V_HELPER_POD_MEMORY_LIMIT: "5Gi"
V2V_HELPER_POD_EPHEMERAL_STORAGE_REQUEST: "3Gi" V2V_HELPER_POD_EPHEMERAL_STORAGE_REQUEST: "3Gi"
V2V_HELPER_POD_EPHEMERAL_STORAGE_LIMIT: "3Gi" V2V_HELPER_POD_EPHEMERAL_STORAGE_LIMIT: "3Gi"
HTTP_TIMEOUT_SECONDS: "30" # timeout for http calls in seconds
+47
View File
@@ -0,0 +1,47 @@
# v0.4.2
- **Tag:** `v0.4.2`
- **Published:** 2026-03-18T18:50:07Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.2
## Release Notes
## What's Changed
* UI access control by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1629
* refactor for a cleaner code: consolidate go modules and constants by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1560
* Simplify S3 QCOW2 upload paths by removing date folders by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1631
* fix - Static network interface name is not getting preserved for Rocky9 by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1634
* Refactor: move commonly used functions to common package by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1633
* fix: Wait for network IP and default route before installing K3s master and worker by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1644
* metadata as input by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1639
* Implement independent post-migration script execution for mixed OS plans by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1638
* #1607 : Cancel button is not working during vddk upload by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1635
* #1575, #1577 : Start Migration is not getting disabled by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1637
* Added checks for failure in user management vjbctl by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1659
* Add exponential backoff auto-reconnect for migration pod log streams by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1657
* Fix UI RBAC permissions for pod operations by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1661
* fix: Scale up agents on L2 network by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1654
* Detect if target is L2 network if so ignore ip by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1666
* Added failure checks in vjbctl by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1672
* create seperate CI to create base image, use this base image to generate qcow2 by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1677
* Revert "create seperate CI to create base image, use this base image to generate qcow2" by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1684
* #1543 : VM selection filter is not working properly by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1682
* fix: Version lock ingress version by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1686
* fix - Migrations failing with - failed to reserve ports for VM by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1688
* #1694 : Extract only first IPv4 address when displaying and editing VM IP addresses by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1695
* Fix: VJailbreakNode CR status was stuck at "CreatingVM" for L2 networks even after the VM joined the K8s cluster. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1693
* Ability to reuse ports in case of l2 network by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1700
* #1692 : Support multiple IP addresses per network interface by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1697
* API change: multiple ips for single nic in vmwaremachines by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1696
* Disabled Fallbacktodhcp and Securitygrp for L2 by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1705
* #1694 : Preserve IP for a powered on VM is getting wrong IPs for no IP interfaces by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1704
* fix agents migration for L3 by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1706
* #1710 : Remove no ip validation in assign IP box for no ip interfaces by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1712
* Mount persist debug log by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1711
* Disabled assigned ip box for multiple ips by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1713
* Defining refresh ui function for vjbctl by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1715
* chore: Pre-release CRD generation for v0.4.2 by @github-actions[bot] in https://github.com/platform9/vjailbreak/pull/1716
* Added a check to preserve ip by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1718
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.1...v0.4.2
+42
View File
@@ -0,0 +1,42 @@
# v0.4.3
- **Tag:** `v0.4.3`
- **Published:** 2026-04-08T06:57:13Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.3
## Release Notes
## What's Changed
* fix for no cluster filter by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1726
* fix - Unable to migrate powered-off VM without IP address by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1732
* Optimise VMware tool removal by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1675
* Added dnsConfig with ndots: 1 for controller,v2v-helper and vpwned pods by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1736
* Replaced the manual name construction with a call to resolvecinderVolumeToLun Function by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1738
* Added delete permissions for secrets by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1740
* uuid for image id discovery call by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1739
* Duplicate ESXi hosts are visible for multiple VMware credentials by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1707
* Preserved non-ASCII chars in Kubernetes secrets by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1745
* #1656: Reset to Default button toggles off Auto Fstab Update and sets migration type to hot by default by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1734
* #1733 : Add a toggle to pass the instance ID when creating PCD credentials on a VJB VM that was created using an L2 network by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1744
* #1648 : Remove the N/A drop down from Storage Accelerated Copy by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1748
* Disable security group selection for L2-enabled PCD credentials by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1757
* Updating virt-v2v version by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1763
* Give permission to UI user to create arraycredsmapping by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1760
* mount point for lvm by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1599
* Implement subnet compatibility warnings for VM network mapping by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1755
* Agents markdown file by @roopakparikh in https://github.com/platform9/vjailbreak/pull/1507
* Feat/support virtual portgroups by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1730
* v2v checks for windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1775
* Add update patch list to secret for ui role by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1777
* #1591 : Migration details in the details modal becomes NA if we remove creds and create new creds, Its reconciling with old creds by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1753
* adding proper filtering for agent nodes by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1778
* Added devcon utility by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1790
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.2...v0.4.3
## Release Notes & Known Issues
* Static IP and interface name preservation is not supported when the target network has DHCP disabled.
* For Windows VMs, static IP configurations are automatically converted to DHCP. However, the original source IP is retained on the destination VM to maintain network connectivity.
* The VMware Tools removal script may leave behind some residual artifacts. Refer to the [documentation](https://platform9.github.io/vjailbreak/guides/troubleshooting/vmware_residual_artifacts/#_top) for more details.
* Agent scaling is not supported for vJailbreak VMs operating on L2 networks.
+67
View File
@@ -0,0 +1,67 @@
# v0.4.4
- **Tag:** `v0.4.4`
- **Published:** 2026-04-29T15:08:09Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.4
## Release Notes
## What's Changed
* Add offline VMware Tools cleanup and optimize firstboot script for cleaner migrations by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1779
* Claude.md and other files for LLM integration by @roopakparikh in https://github.com/platform9/vjailbreak/pull/1690
* Add security scan file for vulnerability scans by @hsri-pf9 in https://github.com/platform9/vjailbreak/pull/1039
* Removing the volume attachment delay due to metadata service connectivity by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1804
* ci: skip build-image and lint workflow by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1807
* Support duplicate VM names by using vCenter MOID as a unique identifier by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1772
* fix - Interface preservation not working on DHCP disabled network for windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1805
* #1761 : Bugsnag not working properly by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1765
* Fix multi-disk volume-type mismatch by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1815
* fix: update VM identification from name to ID in VmsSelectionStep by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1817
* validate CURRENT_INSTACE_ID is in the same env by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1816
* #1783 : Duplicate Amplitude Events Triggered During Migration by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1791
* Added user assigned ip per nic in backend by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1719
* Added UI for per-NIC multi-IP overrides by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1820
* Added workflow for old builds cleanup from quay and S3 by @geet-pf9 in https://github.com/platform9/vjailbreak/pull/1735
* change volume attachment wait time and logs by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1819
* Virtio installation in windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1824
* Improved Mac Filtering by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1831
* 1825 : Enhance Amplitude Events with OS Region Name from Credentials by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1835
* feat: add UI support for setting volume metadata prior to migration by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1838
* feat: add volume image properties prior to migration by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1834
* Handling interfaces with no ip for rhel based os by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1842
* UI: show selected profiles in details modal by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1841
* Remove default profile auto-selection and fix boot volume metadata merge by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1846
* Update portgroupkey if stale with correct live mor of the dvpg. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1836
* improve bootable partition detection for Grub 2.12 and add script logging by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1829
* L2 scaling support. Don't query metadataservice, get uuid from pod's nodename. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1848
* Feature: Add FC support for pure and netapp. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1851
* fix - Suse-11-4 - VM ends up in maintenance mode post migration by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1850
* fix - dirty disk post migration windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1856
* Pass vmkey instead of vmname to delete object by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1865
* Map lun to igroup based on svm by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1866
* Prevent the user from adding multiple IPs if the Preserve IP toggle is turned off by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1863
* use custom http timeout from settings by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1860
* Remove L2 instance ID from UI and backend by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1858
* Fixed master instance ID issue by @geet-pf9 in https://github.com/platform9/vjailbreak/pull/1871
* After we copy the disks via storagecopy add image tags to boot correctly by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1870
* Bug: Use GetIsSimpleNetwork method instead of using stale env variable by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1875
* increased version window for github tags by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1876
* Keepalive client mechanism by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1881
## New Contributors
* @hsri-pf9 made their first contribution in https://github.com/platform9/vjailbreak/pull/1039
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.3...v0.4.4
## Highlights
- **VMware Tools Removal:** The removal script now removes all residual files and folders. A small number of registry entries may remain depending on the Windows version, but these are harmless and can be removed manually if needed.
- **Migration Profiles:** Pre-defined key-value pairs can now be applied to a migrated VM's root volume in OpenStack. Profiles are supported for both Windows and Linux guests.
- **L2 Network Scaling Support:** Scaling of agents in L2 network (Simple Networking) is now supported.
- **Persistent Network Interface for Windows (2016+):** Static network configurations including interface name, IP, MAC, and gateway are now preserved across migration for Windows Server 2016 and above.
- **FC Support for Storage Area Migration (SAM):** Fibre Channel support has been added for SAM workflows, verified with NetApp FC targets.
## Known Limitations
- **Windows 2012 and Earlier — Persist Network:** The persistent network interface option is not supported on Windows 2012 and below. IP and MAC addresses are preserved, but the interface name and gateway may get lost, and the NIC configuration becomes dynamic after migration.
- **Migration Profiles — Upgrade Path:** The two default profiles (Windows and Linux) are auto-created on fresh installations only. Users upgrading from lower versions to v0.4.4 will need to create these profiles manually.
- **VMware Tools Registry Entries:** Depending on the Windows version, a small number of VMware Tools registry entries (listed in public docs) may not be removed by the uninstall script. These are harmless but can be removed manually if desired.
- **FC SAM — Verified Target:** FC support for SAM has been verified against NetApp FC targets. Compatibility with other FC storage vendors is not yet validated.