Compare commits

..
2 Commits
Author SHA1 Message Date
OmkarDeshpande7 f42e7a3eeb Add release v0.4.7 2026-09-15 22:50:14 +05:30
OmkarDeshpande7 430bd3e323 Add release v0.4.6 2026-09-15 22:50:04 +05:30
10 changed files with 603 additions and 110 deletions
+166 -44
View File
@@ -980,13 +980,6 @@ spec:
to remove VMware Tools post migration to remove VMware Tools post migration
type: boolean type: boolean
type: object type: object
assignedIPsPerVM:
additionalProperties:
type: string
description: |-
AssignedIPsPerVM is a map of VM names to comma-separated assigned IPs for cold migration
Format: {"vm-name": "IP1,IP2,IP3"} where each IP corresponds to a network interface by index
type: object
fallbackToDHCP: fallbackToDHCP:
type: boolean type: boolean
firstBootScript: firstBootScript:
@@ -1176,11 +1169,6 @@ spec:
spec: spec:
description: Spec defines the desired state of Migration description: Spec defines the desired state of Migration
properties: properties:
assignedIP:
description: |-
AssignedIP is the comma-separated list of user-assigned IPs for cold migration
Format: "IP1,IP2,IP3" where each IP corresponds to a network interface by index
type: string
disconnectSourceNetwork: disconnectSourceNetwork:
description: |- description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
@@ -1304,6 +1292,11 @@ spec:
- MappingVolume - MappingVolume
- RescanningStorage - RescanningStorage
- XCOPYInProgress - XCOPYInProgress
- SnapshottingSourceVM
- AttachingDisksToProxy
- IdentifyingBlockDevices
- HotAddTransferInProgress
- HotAddCleanup
type: string type: string
retryable: retryable:
description: |- description: |-
@@ -1391,8 +1384,10 @@ spec:
- openstackRef - openstackRef
type: object type: object
networkMapping: networkMapping:
description: NetworkMapping is the reference to the NetworkMapping description: |-
resource that defines source to destination network mappings NetworkMapping is the reference to the NetworkMapping resource that defines source to destination network mappings.
Optional: when the selected VMs have no attached VMware networks, no NetworkMapping is required and this field
may be empty. The controller will skip network reconciliation in that case.
type: string type: string
osFamily: osFamily:
description: OSFamily is the OS type of the virtual machine description: OSFamily is the OS type of the virtual machine
@@ -1400,6 +1395,22 @@ spec:
- windowsGuest - windowsGuest
- linuxGuest - linuxGuest
type: string type: string
proxyVMRef:
description: |-
ProxyVMRef references the ProxyVM to use for HotAdd data copy.
Required when StorageCopyMethod is "HotAdd".
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
source: source:
description: Source is the source details for the virtual machine description: Source is the source details for the virtual machine
properties: properties:
@@ -1414,10 +1425,11 @@ spec:
default: normal default: normal
description: |- description: |-
StorageCopyMethod indicates the method to use for storage migration StorageCopyMethod indicates the method to use for storage migration
Valid values: "normal" (default), "StorageAcceleratedCopy" Valid values: "normal" (default), "StorageAcceleratedCopy", "HotAdd"
enum: enum:
- normal - normal
- StorageAcceleratedCopy - StorageAcceleratedCopy
- HotAdd
type: string type: string
storageMapping: storageMapping:
description: |- description: |-
@@ -1442,7 +1454,6 @@ spec:
type: string type: string
required: required:
- destination - destination
- networkMapping
- source - source
type: object type: object
type: object type: object
@@ -2032,6 +2043,134 @@ 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: proxyvms.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ProxyVM
listKind: ProxyVMList
plural: proxyvms
singular: proxyvm
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.vmName
name: VM-Name
type: string
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .status.ipAddress
name: IP
type: string
- jsonPath: .status.attachedDiskCount
name: Attached-Disks
type: integer
name: v1alpha1
schema:
openAPIV3Schema:
description: ProxyVM is the Schema for the proxyvms API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ProxyVMSpec defines the desired state of ProxyVM
properties:
sshKeyPairRef:
description: |-
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
vmName:
type: string
vmwareCredsRef:
description: |-
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
required:
- vmName
- vmwareCredsRef
type: object
status:
description: ProxyVMStatus defines the observed state of ProxyVM
properties:
attachedDiskCount:
type: integer
componentsVerified:
items:
description: ProxyVMComponentCheck records whether a required component
was found on the Proxy VM.
properties:
message:
type: string
name:
type: string
present:
type: boolean
required:
- name
- present
type: object
type: array
ipAddress:
type: string
lastValidationTime:
format: date-time
type: string
validationMessage:
type: string
validationStatus:
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
@@ -2714,6 +2853,12 @@ spec:
items: items:
type: string type: string
type: array type: array
openstackServerGroup:
description: |-
OpenstackServerGroup is the ID of the OpenStack server group used for VM placement scheduling.
When set, the agent VM is placed according to the server group's policy.
If empty, default OpenStack scheduling applies.
type: string
openstackVolumeType: openstackVolumeType:
description: |- description: |-
OpenstackVolumeType is the volume type for the root disk of the VM OpenstackVolumeType is the volume type for the root disk of the VM
@@ -3651,6 +3796,7 @@ rules:
- openstackcreds - openstackcreds
- pcdclusters - pcdclusters
- pcdhosts - pcdhosts
- proxyvms
- rdmdisks - rdmdisks
- rollingmigrationplans - rollingmigrationplans
- storagemappings - storagemappings
@@ -3681,6 +3827,7 @@ rules:
- openstackcreds/finalizers - openstackcreds/finalizers
- pcdclusters/finalizers - pcdclusters/finalizers
- pcdhosts/finalizers - pcdhosts/finalizers
- proxyvms/finalizers
- rdmdisks/finalizers - rdmdisks/finalizers
- rollingmigrationplans/finalizers - rollingmigrationplans/finalizers
- storagemappings/finalizers - storagemappings/finalizers
@@ -3703,6 +3850,7 @@ rules:
- openstackcreds/status - openstackcreds/status
- pcdclusters/status - pcdclusters/status
- pcdhosts/status - pcdhosts/status
- proxyvms/status
- rdmdisks/status - rdmdisks/status
- rollingmigrationplans/status - rollingmigrationplans/status
- storagemappings/status - storagemappings/status
@@ -4680,17 +4828,6 @@ kind: ClusterRole
metadata: metadata:
name: ui-manager-role name: ui-manager-role
rules: rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- get
- list
- patch
- update
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
@@ -4703,20 +4840,10 @@ rules:
- patch - patch
- update - update
- watch - watch
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- patch
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- configmaps/status - configmaps/status
- pods/status
verbs: verbs:
- get - get
- apiGroups: - apiGroups:
@@ -4727,13 +4854,6 @@ rules:
- get - get
- list - list
- watch - watch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- list
- apiGroups: - apiGroups:
- vjailbreak.k8s.pf9.io - vjailbreak.k8s.pf9.io
resources: resources:
@@ -4750,6 +4870,7 @@ rules:
- openstackcreds - openstackcreds
- pcdclusters - pcdclusters
- pcdhosts - pcdhosts
- proxyvms
- rdmdisks - rdmdisks
- rollingmigrationplans - rollingmigrationplans
- storagemappings - storagemappings
@@ -4782,6 +4903,7 @@ rules:
- openstackcreds/finalizers - openstackcreds/finalizers
- pcdclusters/finalizers - pcdclusters/finalizers
- pcdhosts/finalizers - pcdhosts/finalizers
- proxyvms/finalizers
- rdmdisks/finalizers - rdmdisks/finalizers
- rollingmigrationplans/finalizers - rollingmigrationplans/finalizers
- storagemappings/finalizers - storagemappings/finalizers
+4
View File
@@ -20,6 +20,10 @@ spec:
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- containerPort: 80 - containerPort: 80
envFrom:
- configMapRef:
name: pf9-env
optional: true
volumeMounts: volumeMounts:
- name: pf9-logs - name: pf9-logs
mountPath: /var/log/pf9 mountPath: /var/log/pf9
+2 -1
View File
@@ -41,7 +41,8 @@ spec:
envFrom: envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-controller:v0.4.5 optional: true
image: quay.io/platform9/vjailbreak-controller:v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
lifecycle: lifecycle:
preStop: preStop:
+55 -2
View File
@@ -20,20 +20,41 @@ spec:
type: RollingUpdate type: RollingUpdate
template: template:
metadata: metadata:
annotations:
container.apparmor.security.beta.kubernetes.io/vpwned: unconfined
labels: labels:
app: vpwned-sdk app: vpwned-sdk
spec: spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
containers: containers:
- envFrom: - env:
- name: DBUS_SYSTEM_BUS_ADDRESS
value: unix:path=/run/dbus/system_bus_socket
envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.4.5 optional: true
image: quay.io/platform9/vjailbreak-vpwned:v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: vpwned name: vpwned
ports: ports:
- containerPort: 3001 - containerPort: 3001
protocol: TCP protocol: TCP
resources: {} resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- DAC_OVERRIDE
drop:
- ALL
runAsUser: 0
terminationMessagePath: /dev/termination-log terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File terminationMessagePolicy: File
volumeMounts: volumeMounts:
@@ -42,6 +63,18 @@ spec:
readOnly: true readOnly: true
- mountPath: /home/ubuntu - mountPath: /home/ubuntu
name: vddk-storage name: vddk-storage
- mountPath: /run/dbus/system_bus_socket
name: dbus-socket
- mountPath: /etc/systemd/timesyncd.conf.d
name: timesyncd-conf-dir
- mountPath: /usr/share/zoneinfo
name: host-zoneinfo
readOnly: true
- mountPath: /etc/pf9
name: pf9-config
- mountPath: /var/log/pf9
name: pf9-logs
readOnly: true
dnsConfig: dnsConfig:
options: options:
- name: ndots - name: ndots
@@ -61,4 +94,24 @@ spec:
path: /home/ubuntu path: /home/ubuntu
type: DirectoryOrCreate type: DirectoryOrCreate
name: vddk-storage name: vddk-storage
- hostPath:
path: /run/dbus/system_bus_socket
type: Socket
name: dbus-socket
- hostPath:
path: /etc/systemd/timesyncd.conf.d
type: DirectoryOrCreate
name: timesyncd-conf-dir
- hostPath:
path: /usr/share/zoneinfo
type: Directory
name: host-zoneinfo
- hostPath:
path: /etc/pf9
type: Directory
name: pf9-config
- hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
name: pf9-logs
--- ---
+5 -8
View File
@@ -24,23 +24,20 @@ spec:
serviceAccountName: ui-manager-sa serviceAccountName: ui-manager-sa
containers: containers:
- name: vjailbreak-ui-container - name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.5 image: quay.io/platform9/vjailbreak-ui:v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- containerPort: 80 - containerPort: 80
envFrom:
- configMapRef:
name: pf9-env
optional: true
volumeMounts: volumeMounts:
- name: nginx-shadow-htpasswd - name: nginx-shadow-htpasswd
mountPath: /etc/nginx/shadow mountPath: /etc/nginx/shadow
- name: pf9-logs
mountPath: /var/log/pf9
readOnly: true
volumes: volumes:
- name: nginx-shadow-htpasswd - name: nginx-shadow-htpasswd
hostPath: hostPath:
path: /etc/htpasswd path: /etc/htpasswd
type: FileOrCreate type: FileOrCreate
- name: pf9-logs
hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
--- ---
+228 -55
View File
@@ -980,13 +980,6 @@ spec:
to remove VMware Tools post migration to remove VMware Tools post migration
type: boolean type: boolean
type: object type: object
assignedIPsPerVM:
additionalProperties:
type: string
description: |-
AssignedIPsPerVM is a map of VM names to comma-separated assigned IPs for cold migration
Format: {"vm-name": "IP1,IP2,IP3"} where each IP corresponds to a network interface by index
type: object
fallbackToDHCP: fallbackToDHCP:
type: boolean type: boolean
firstBootScript: firstBootScript:
@@ -1176,11 +1169,6 @@ spec:
spec: spec:
description: Spec defines the desired state of Migration description: Spec defines the desired state of Migration
properties: properties:
assignedIP:
description: |-
AssignedIP is the comma-separated list of user-assigned IPs for cold migration
Format: "IP1,IP2,IP3" where each IP corresponds to a network interface by index
type: string
disconnectSourceNetwork: disconnectSourceNetwork:
description: |- description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
@@ -1304,6 +1292,11 @@ spec:
- MappingVolume - MappingVolume
- RescanningStorage - RescanningStorage
- XCOPYInProgress - XCOPYInProgress
- SnapshottingSourceVM
- AttachingDisksToProxy
- IdentifyingBlockDevices
- HotAddTransferInProgress
- HotAddCleanup
type: string type: string
retryable: retryable:
description: |- description: |-
@@ -1391,8 +1384,10 @@ spec:
- openstackRef - openstackRef
type: object type: object
networkMapping: networkMapping:
description: NetworkMapping is the reference to the NetworkMapping description: |-
resource that defines source to destination network mappings NetworkMapping is the reference to the NetworkMapping resource that defines source to destination network mappings.
Optional: when the selected VMs have no attached VMware networks, no NetworkMapping is required and this field
may be empty. The controller will skip network reconciliation in that case.
type: string type: string
osFamily: osFamily:
description: OSFamily is the OS type of the virtual machine description: OSFamily is the OS type of the virtual machine
@@ -1400,6 +1395,22 @@ spec:
- windowsGuest - windowsGuest
- linuxGuest - linuxGuest
type: string type: string
proxyVMRef:
description: |-
ProxyVMRef references the ProxyVM to use for HotAdd data copy.
Required when StorageCopyMethod is "HotAdd".
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
source: source:
description: Source is the source details for the virtual machine description: Source is the source details for the virtual machine
properties: properties:
@@ -1414,10 +1425,11 @@ spec:
default: normal default: normal
description: |- description: |-
StorageCopyMethod indicates the method to use for storage migration StorageCopyMethod indicates the method to use for storage migration
Valid values: "normal" (default), "StorageAcceleratedCopy" Valid values: "normal" (default), "StorageAcceleratedCopy", "HotAdd"
enum: enum:
- normal - normal
- StorageAcceleratedCopy - StorageAcceleratedCopy
- HotAdd
type: string type: string
storageMapping: storageMapping:
description: |- description: |-
@@ -1442,7 +1454,6 @@ spec:
type: string type: string
required: required:
- destination - destination
- networkMapping
- source - source
type: object type: object
type: object type: object
@@ -2032,6 +2043,134 @@ 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: proxyvms.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ProxyVM
listKind: ProxyVMList
plural: proxyvms
singular: proxyvm
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.vmName
name: VM-Name
type: string
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .status.ipAddress
name: IP
type: string
- jsonPath: .status.attachedDiskCount
name: Attached-Disks
type: integer
name: v1alpha1
schema:
openAPIV3Schema:
description: ProxyVM is the Schema for the proxyvms API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ProxyVMSpec defines the desired state of ProxyVM
properties:
sshKeyPairRef:
description: |-
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
vmName:
type: string
vmwareCredsRef:
description: |-
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
required:
- vmName
- vmwareCredsRef
type: object
status:
description: ProxyVMStatus defines the observed state of ProxyVM
properties:
attachedDiskCount:
type: integer
componentsVerified:
items:
description: ProxyVMComponentCheck records whether a required component
was found on the Proxy VM.
properties:
message:
type: string
name:
type: string
present:
type: boolean
required:
- name
- present
type: object
type: array
ipAddress:
type: string
lastValidationTime:
format: date-time
type: string
validationMessage:
type: string
validationStatus:
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
@@ -2714,6 +2853,12 @@ spec:
items: items:
type: string type: string
type: array type: array
openstackServerGroup:
description: |-
OpenstackServerGroup is the ID of the OpenStack server group used for VM placement scheduling.
When set, the agent VM is placed according to the server group's policy.
If empty, default OpenStack scheduling applies.
type: string
openstackVolumeType: openstackVolumeType:
description: |- description: |-
OpenstackVolumeType is the volume type for the root disk of the VM OpenstackVolumeType is the volume type for the root disk of the VM
@@ -3651,6 +3796,7 @@ rules:
- openstackcreds - openstackcreds
- pcdclusters - pcdclusters
- pcdhosts - pcdhosts
- proxyvms
- rdmdisks - rdmdisks
- rollingmigrationplans - rollingmigrationplans
- storagemappings - storagemappings
@@ -3681,6 +3827,7 @@ rules:
- openstackcreds/finalizers - openstackcreds/finalizers
- pcdclusters/finalizers - pcdclusters/finalizers
- pcdhosts/finalizers - pcdhosts/finalizers
- proxyvms/finalizers
- rdmdisks/finalizers - rdmdisks/finalizers
- rollingmigrationplans/finalizers - rollingmigrationplans/finalizers
- storagemappings/finalizers - storagemappings/finalizers
@@ -3703,6 +3850,7 @@ rules:
- openstackcreds/status - openstackcreds/status
- pcdclusters/status - pcdclusters/status
- pcdhosts/status - pcdhosts/status
- proxyvms/status
- rdmdisks/status - rdmdisks/status
- rollingmigrationplans/status - rollingmigrationplans/status
- storagemappings/status - storagemappings/status
@@ -4592,7 +4740,8 @@ spec:
envFrom: envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-controller:v0.4.5 optional: true
image: quay.io/platform9/vjailbreak-controller:v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
lifecycle: lifecycle:
preStop: preStop:
@@ -4679,20 +4828,41 @@ spec:
type: RollingUpdate type: RollingUpdate
template: template:
metadata: metadata:
annotations:
container.apparmor.security.beta.kubernetes.io/vpwned: unconfined
labels: labels:
app: vpwned-sdk app: vpwned-sdk
spec: spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
containers: containers:
- envFrom: - env:
- name: DBUS_SYSTEM_BUS_ADDRESS
value: unix:path=/run/dbus/system_bus_socket
envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.4.5 optional: true
image: quay.io/platform9/vjailbreak-vpwned:v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: vpwned name: vpwned
ports: ports:
- containerPort: 3001 - containerPort: 3001
protocol: TCP protocol: TCP
resources: {} resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- DAC_OVERRIDE
drop:
- ALL
runAsUser: 0
terminationMessagePath: /dev/termination-log terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File terminationMessagePolicy: File
volumeMounts: volumeMounts:
@@ -4701,6 +4871,18 @@ spec:
readOnly: true readOnly: true
- mountPath: /home/ubuntu - mountPath: /home/ubuntu
name: vddk-storage name: vddk-storage
- mountPath: /run/dbus/system_bus_socket
name: dbus-socket
- mountPath: /etc/systemd/timesyncd.conf.d
name: timesyncd-conf-dir
- mountPath: /usr/share/zoneinfo
name: host-zoneinfo
readOnly: true
- mountPath: /etc/pf9
name: pf9-config
- mountPath: /var/log/pf9
name: pf9-logs
readOnly: true
dnsConfig: dnsConfig:
options: options:
- name: ndots - name: ndots
@@ -4720,6 +4902,26 @@ spec:
path: /home/ubuntu path: /home/ubuntu
type: DirectoryOrCreate type: DirectoryOrCreate
name: vddk-storage name: vddk-storage
- hostPath:
path: /run/dbus/system_bus_socket
type: Socket
name: dbus-socket
- hostPath:
path: /etc/systemd/timesyncd.conf.d
type: DirectoryOrCreate
name: timesyncd-conf-dir
- hostPath:
path: /usr/share/zoneinfo
type: Directory
name: host-zoneinfo
- hostPath:
path: /etc/pf9
type: Directory
name: pf9-config
- hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
name: pf9-logs
--- ---
apiVersion: networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
@@ -4775,25 +4977,22 @@ spec:
serviceAccountName: ui-manager-sa serviceAccountName: ui-manager-sa
containers: containers:
- name: vjailbreak-ui-container - name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.5 image: quay.io/platform9/vjailbreak-ui:v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- containerPort: 80 - containerPort: 80
envFrom:
- configMapRef:
name: pf9-env
optional: true
volumeMounts: volumeMounts:
- name: nginx-shadow-htpasswd - name: nginx-shadow-htpasswd
mountPath: /etc/nginx/shadow mountPath: /etc/nginx/shadow
- name: pf9-logs
mountPath: /var/log/pf9
readOnly: true
volumes: volumes:
- name: nginx-shadow-htpasswd - name: nginx-shadow-htpasswd
hostPath: hostPath:
path: /etc/htpasswd path: /etc/htpasswd
type: FileOrCreate type: FileOrCreate
- name: pf9-logs
hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
@@ -4896,17 +5095,6 @@ kind: ClusterRole
metadata: metadata:
name: ui-manager-role name: ui-manager-role
rules: rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- get
- list
- patch
- update
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
@@ -4919,20 +5107,10 @@ rules:
- patch - patch
- update - update
- watch - watch
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- patch
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
- configmaps/status - configmaps/status
- pods/status
verbs: verbs:
- get - get
- apiGroups: - apiGroups:
@@ -4943,13 +5121,6 @@ rules:
- get - get
- list - list
- watch - watch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- list
- apiGroups: - apiGroups:
- vjailbreak.k8s.pf9.io - vjailbreak.k8s.pf9.io
resources: resources:
@@ -4966,6 +5137,7 @@ rules:
- openstackcreds - openstackcreds
- pcdclusters - pcdclusters
- pcdhosts - pcdhosts
- proxyvms
- rdmdisks - rdmdisks
- rollingmigrationplans - rollingmigrationplans
- storagemappings - storagemappings
@@ -4998,6 +5170,7 @@ rules:
- openstackcreds/finalizers - openstackcreds/finalizers
- pcdclusters/finalizers - pcdclusters/finalizers
- pcdhosts/finalizers - pcdhosts/finalizers
- proxyvms/finalizers
- rdmdisks/finalizers - rdmdisks/finalizers
- rollingmigrationplans/finalizers - rollingmigrationplans/finalizers
- storagemappings/finalizers - storagemappings/finalizers
+1
View File
@@ -1,4 +1,5 @@
# This file is used to set environment variables to be injected into v2v-helper # This file is used to set environment variables to be injected into v2v-helper
# User can populate this file via cloud-init # User can populate this file via cloud-init
TZ=UTC
@@ -20,9 +20,11 @@ data:
VMWARE_CREDS_REQUEUE_AFTER_MINUTES: "60" # number of minutes to requeue after for vmware creds VMWARE_CREDS_REQUEUE_AFTER_MINUTES: "60" # number of minutes to requeue after for vmware creds
VALIDATE_RDM_OWNER_VMS: "true" # validate RDM owner VMs before migration VALIDATE_RDM_OWNER_VMS: "true" # validate RDM owner VMs before migration
DEPLOYMENT_NAME: vJailbreak DEPLOYMENT_NAME: vJailbreak
TIMEZONE: ""
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: "true" # automatically update fstab AUTO_FSTAB_UPDATE: "true" # automatically update fstab
DEFAULT_NETWORK_PERSISTENCE: "false" # default value for persist source network interfaces in migration form
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_CPU_REQUEST: "1000m"
V2V_HELPER_POD_MEMORY_REQUEST: "2Gi" V2V_HELPER_POD_MEMORY_REQUEST: "2Gi"
@@ -30,5 +32,7 @@ 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"
NTP_SERVERS: ""
HTTP_TIMEOUT_SECONDS: "30" # timeout for http calls in seconds HTTP_TIMEOUT_SECONDS: "30" # timeout for http calls in seconds
PROXY_VM_OVA_URL: "https://vjailbreak-dev.s3.us-west-2.amazonaws.com/hot-add/ha-proxy-vm.ova" # OVA template URL for deploying the Hot-Add Proxy VM
+69
View File
@@ -0,0 +1,69 @@
# v0.4.6
- **Tag:** `v0.4.6`
- **Published:** 2026-06-11T05:42:35Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.6
## Release Notes
## What's Changed
* [1822] Removed redundant field (AssignedIP) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1899
* [1907] Fix: fetch single VMwareMachine instead of entire list in migration detail query by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1903
* [1241] Disable port security on migrated ports when no security group is selected while migration by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1892
* #1822: Display All VM IP Addresses in Migration Details Page (Assigned & Preserved IPs) by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1911
* [1897] Feat: Add controller logs button to topbar in UI by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1896
* docs(CLAUDE.md): add unit test requirements for Claude-written code by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1917
* [1830] Fix: Include RBAC-shared security groups in destination tenant security group list by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1910
* [1925] ci: Shift nightly build trigger to 01:00 IST by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1924
* [1920] Added warnings for selected VMs with missing IPs by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1918
* [1913] Fix: Skip VMwareMachine reconciliation for migrated VMs by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1912
* #973: Verify vCenter FQDN DNS resolution by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1928
* [1931] feat: Add debug bundle collection with resources and logs for easier troubleshooting by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1929
* Bug: Filter Flavor Selection on AZ and flavours without AZ by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1916
* [1840] Added the ability to migrate the VMs with no interface by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1927
* Updating the compute api version to support multi-attach volumes by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1932
* [1921] feat: Show revalidation progress on Credentials page by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1919
* [1890] agent dns config by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1937
* [1888] refactor: Remove direct pod permissions by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1935
* [1938] Support VMs with space in their name by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1936
* [1933] Don't restart ui when listing users by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1939
* [1796] Optimising the copy changed blocks mechanism for faster sync by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1934
* #587: UI refactor migration by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1960
* #1940: Block v2v pod creation or disable start migration if vddk is not uploaded by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1969
* #1873: Block security group selection during scaling L2 Agent by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1962
* [1803] fix: Added retry for transient API errors by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1958
* [1961] fix: Handle transient vCenter errors during VM power-off by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1973
* [1610] Fix VMware Tools cleanup for Linux/SUSE VMs by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1968
* [1482] Adding hot add proxy by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1964
* [1978] Sles LVM Minitrd fix by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1976
* #1971: UI hot add proxy migration complete UI requirements by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1981
* UI E2E testcases with mock data using playwright by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1972
* Fix cluster conversion issues by @geet-pf9 in https://github.com/platform9/vjailbreak/pull/1984
* [1990] Fix boot device index parse failure due to mixed guestfish stderr/stdout by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1993
* Hypervisor resmgr role Cluster Conversion by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1997
* #1999: Security group warning should be visible for Use security group of primary vJB vm by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2000
* [2004] Fix SLED OS detection and broaden SSH key format support by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2003
* [2002] fix- Cant upload key Invalid key error for RSA key by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2006
* [2009] Unified logs icons and aligned migration name across logs drawer and details by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2008
* Update CRD for v0.4.6 by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2017
## Highlights
**Hot Add Proxy**: Hot-Add Proxy is an advanced data copy method that attaches source VM disks directly to a dedicated Proxy VM and streams the data over NBD (Network Block Device) to the destination. Instead of copying data over the NFC protocol from ESXi. This feature is currently in beta, will be stabilized in the coming releases.
**Migration Reliability**:
- VMs with no network interfaces can now be migrated successfully.
- Multi-attach volume types are now supported for migration.
**Enhanced UX**:
- All IP addresses (assigned and preserved) are now shown on the Migration Details page in the UI.
- Controller logs (migration controller manager) are visible in the UI irrespective of any migrations triggered.
- A debug bundle collection button makes log and resource gathering easier for troubleshooting. All CRs related to that migration are now gathered for easier debugging.
## Known Limitations
- Migrations of VMs with grub version lower than 2 might face issues while booting post migration.
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.5...v0.4.6
+69
View File
@@ -0,0 +1,69 @@
# v0.4.7
- **Tag:** `v0.4.7`
- **Published:** 2026-07-02T10:52:42Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.7
## Release Notes
## What's Changed
* Fixed the missing --binding-profile '{"l2-port": true}' on ports created for VMs migrated onto L2-only networks in PCD by @spai-p9 in https://github.com/platform9/vjailbreak/pull/2015
* [2007] Fix fstab rewrite incorrectly activating commented bind-mount entries by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2011
* [1058] Configure NTP servers and system timezone for the vJailbreak VM directly from the UI by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1742
* [1915] Added persist source network interfaces as a global setting by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2025
* Detect if we are using virtio-scsi controller for windows and pass --blockdriver for conversion by @spai-p9 in https://github.com/platform9/vjailbreak/pull/2027
* [1812] Fix volume cleanup when CreateTargetInstance times out by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2026
* [1975] Hot-Add Proxy VM UX improvements by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2023
* [1996] upgrade core components with guest OS migration fixes by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2031
* [1970] Add server group selection for agent scale-up to control placement affinity by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2032
* [1979] VM selection refresh button now revalidates VMware credentials by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2034
* [1872] Verify volume bootable state after SetBootable timeout by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2035
* prebake proxy VM OVA into appliance image by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2038
* Fix: Check hardware version and migration type only then check for cbt by @spai-p9 in https://github.com/platform9/vjailbreak/pull/2037
* [1980] Enhance user experience with new UI by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2040
* UI side changes for Hot add proxy improvements by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2030
* Rename Firstboot-Scheduler.ps1 to 0-Firstboot-Scheduler.ps1 by @noaboa97 in https://github.com/platform9/vjailbreak/pull/1994
* fix(v2v-helper): repair broken build on main by @valentin-pf9 in https://github.com/platform9/vjailbreak/pull/1945
* [1750] UI for edit and retry by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2024
* [2044] Consolidate edit-and-retry into single Retry action by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2021
* #2047 : Need UI enhancement in hot add proxy changes by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2048
* [2050] Optimize retry flow and add bulk retry by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2049
* [2052] Fix Windows firstboot loop by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2056
* [1915] Added persist source network interfaces as a global setting by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2058
* [2054] fix(retry): prefilled IP overrides not shown in Assign IP dialog on retry form by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2059
* [2062] fix - ssh keypair name missmatch by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2060
* #2051: Converting disk shows copy disk inside the migration details page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2063
* #2067: Block/Grey out the already registered proxy vm, this could mismatch the secret by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2070
* [2079] Fix ProxyVM showing Ready status while SSH validation is failing by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/2080
* #2068 #2078 #2069: VM is in conversion state but it shows Hot add transfer in UI and stuck in validating state by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2074
* [2077] Fix: Reset to Defaults must skip NTP server & timezone while migration running by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2084
* #2088: [UI] Windows VM should be blocked for selection as a proxy VM by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2089
* [2093] feat: add debug-bundle API to vpwned by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2090
* #2082: Debug logs, yamls are not present in logs fetched using log download button by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/2092
* Fix Host Entries tab: duplicate description text and low-visibility button by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/2099
## New Contributors
* @noaboa97 made their first contribution in https://github.com/platform9/vjailbreak/pull/1994
* @valentin-pf9 made their first contribution in https://github.com/platform9/vjailbreak/pull/1945
## Highlights
**Migration details page**: Added new page which shows in depth state monitoring for migration lifecycle.
**Vjailbreak Proxy**:
* End-to-end UI for registering a Proxy VM (SSH key upload, validation status), selecting Hot-Add as the copy method in the migration form, and monitoring hot-add-specific migration phases
* Verification now auto-installs missing dependencies on the Proxy VM during validation, eliminating the need for manual pre-configuration before registering
**Advanced Configuration Management**
* Configure **NTP servers** and **system timezone** for vJailbreak VMs directly from the UI.
* Introduced **server group selection** for agent scale-up, enabling better placement and affinity control.
**Enhanced Retry Experience**
* Introduced a new Edit & Retry capability, allowing users to modify migration settings and retry failed migrations without recreating the migration.
* Simplified recovery with a unified Retry action and support for Bulk Retry, reducing manual effort.
## Known Limitations
**Proxy VM OVA requires ESXi 8.0 U2 or higher**: The bundled OVA template uses virtual hardware version vmx-21, which is incompatible with older ESXi hosts. Attempting to deploy it on ESXi 7.x will fail with an "unsupported hardware family" error. For ESXi 7.x environments, the Proxy VM must be created and configured manually instead of using the OVA deploy option.
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.6...v0.4.7