Compare commits

...
4 Commits
Author SHA1 Message Date
OmkarDeshpande7 54158f60c9 Add release v0.3.3 2026-09-15 22:48:09 +05:30
OmkarDeshpande7 0d3c530d6d Add release v0.3.2 2026-09-15 22:48:00 +05:30
OmkarDeshpande7 4542ee3fcd Add release v0.3.1 2026-09-15 22:47:51 +05:30
OmkarDeshpande7 4a634af992 Add release v0.3.0 2026-09-15 22:47:41 +05:30
10 changed files with 4128 additions and 8 deletions
+303 -2
View File
@@ -473,6 +473,9 @@ spec:
dataCopyStart:
format: date-time
type: string
disconnectSourceNetwork:
default: false
type: boolean
healthCheckPort:
default: "443"
type: string
@@ -513,6 +516,10 @@ spec:
retry:
description: Retry the migration if it fails
type: boolean
securityGroups:
items:
type: string
type: array
virtualMachines:
description: VirtualMachines is a list of virtual machines to be migrated
items:
@@ -604,6 +611,11 @@ spec:
spec:
description: Spec defines the desired state of Migration
properties:
disconnectSourceNetwork:
description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
after a successful migration to prevent network conflicts. Defaults to false.
type: boolean
initiateCutover:
description: InitiateCutover is the flag to initiate cutover
type: boolean
@@ -785,6 +797,10 @@ spec:
description: TargetPCDClusterName is the name of the PCD cluster where
the virtual machine will be migrated
type: string
useFlavorless:
description: UseFlavorless indicates if the migration should use flavorless
VM creation for PCD.
type: boolean
virtioWinDriver:
description: VirtioWinDriver is the driver to be used for the virtual
machine
@@ -1076,6 +1092,27 @@ spec:
items:
type: string
type: array
securityGroups:
items:
description: SecurityGroupInfo holds the security group name
and ID
properties:
id:
type: string
name:
type: string
requiresIdDisplay:
type: boolean
required:
- id
- name
- requiresIdDisplay
type: object
type: array
volumeBackends:
items:
type: string
type: array
volumeTypes:
items:
type: string
@@ -1287,6 +1324,164 @@ spec:
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: rdmdisks.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: RDMDisk
listKind: RDMDiskList
plural: rdmdisks
singular: rdmdisk
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: RDMDisk is the Schema for the rdmdisks 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: Spec defines the desired state of RDMDisk
properties:
diskName:
description: 'Important: Run "make" to regenerate code after modifying
this file'
type: string
diskSize:
type: integer
displayName:
type: string
importToCinder:
type: boolean
openstackVolumeRef:
description: OpenstackVolumeRef ... contains information about the
OpenStack volume reference.
properties:
cinderBackendPool:
type: string
openstackCreds:
type: string
source:
additionalProperties:
type: string
type: object
volumeType:
type: string
required:
- cinderBackendPool
- source
- volumeType
type: object
ownerVMs:
items:
type: string
type: array
uuid:
type: string
required:
- diskName
- diskSize
- displayName
- openstackVolumeRef
- ownerVMs
- uuid
type: object
status:
description: RDMDiskStatus defines the observed state of RDMDisk.
properties:
cinderVolumeID:
type: string
conditions:
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
phase:
enum:
- Available
- Managing
- Managed
- Error
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
@@ -1458,6 +1653,9 @@ spec:
dataCopyStart:
format: date-time
type: string
disconnectSourceNetwork:
default: false
type: boolean
healthCheckPort:
default: "443"
type: string
@@ -2178,6 +2376,8 @@ spec:
description: NIC represents a Virtual ethernet card in the virtual
machine.
properties:
ipAddress:
type: string
mac:
type: string
network:
@@ -2506,6 +2706,30 @@ rules:
- get
- patch
- update
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- batch
resources:
@@ -2531,6 +2755,7 @@ rules:
- openstackcreds
- pcdclusters
- pcdhosts
- rdmdisks
- rollingmigrationplans
- storagemappings
- vjailbreaknodes
@@ -2558,6 +2783,7 @@ rules:
- openstackcreds/finalizers
- pcdclusters/finalizers
- pcdhosts/finalizers
- rdmdisks/finalizers
- rollingmigrationplans/finalizers
- storagemappings/finalizers
- vjailbreaknodes/finalizers
@@ -2577,6 +2803,7 @@ rules:
- openstackcreds/status
- pcdclusters/status
- pcdhosts/status
- rdmdisks/status
- rollingmigrationplans/status
- storagemappings/status
- vjailbreaknodes/status
@@ -2939,6 +3166,77 @@ rules:
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rdmdisk-admin-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks
verbs:
- '*'
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rdmdisk-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rdmdisk-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
@@ -3368,7 +3666,7 @@ spec:
- --health-probe-bind-address=:8081
command:
- /manager
image: quay.io/platform9/vjailbreak-controller:v0.2.0
image: quay.io/platform9/vjailbreak-controller:v0.3.3
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
@@ -3401,6 +3699,8 @@ spec:
name: vddk
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
securityContext:
runAsGroup: 0
@@ -3446,7 +3746,7 @@ spec:
app: vpwned-sdk
spec:
containers:
- image: quay.io/platform9/vjailbreak-vpwned:v0.2.0
- image: quay.io/platform9/vjailbreak-vpwned:v0.3.3
imagePullPolicy: IfNotPresent
name: vpwned
ports:
@@ -3463,6 +3763,7 @@ spec:
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
File diff suppressed because it is too large Load Diff
+11
View File
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Secret
metadata:
name: analytics-keys
namespace: migration-system
type: Opaque
data:
amplitude-api-key: ${AMPLITUDE_API_KEY}
bugsnag-api-key: ${BUGSNAG_API_KEY}
app-version: ${VJB_VERSION_TAG}
release-stage: cHJvZHVjdGlvbgo=
+29 -5
View File
@@ -61,6 +61,19 @@ spec:
MASTER_IP=$(grep -E '^export MASTER_IP=' /etc/pf9/k3s.env | cut -d'=' -f2)
if [ "$IS_MASTER" = "true" ]; then
echo "Master node detected. IP: $MASTER_IP"
# Clean up logs older than 24 hours on master node
echo "Cleaning up logs older than 24 hours on master node"
# Note: Not restarting services to avoid disruption
# Instead, properly closing files in the v2v-helper code
# Clean master's own logs and force delete any stuck files
find /var/log/pf9 -type f -mtime +1 -delete 2>/dev/null || true
# Clean worker logs stored on master and force delete any stuck files
find /var/lib/rsync/worker-logs -type f -mtime +1 -delete 2>/dev/null || true
# Clear deleted but open files (useful when processes still hold file handles)
echo "Clearing deleted but open files..."
lsof +L1 | grep "/var/log/pf9\|/var/lib/rsync/worker-logs" | awk '{print $2}' | xargs -r kill -HUP 2>/dev/null || true
echo "Starting rsync daemon..."
rsync --daemon --config=/etc/pf9/rsyncd.conf --no-detach
if ps aux | grep rsync | grep -v grep; then
@@ -73,14 +86,25 @@ spec:
echo "Worker node detected. Syncing from Master..."
while true; do
mkdir -p /home/ubuntu/vmware-vix-disklib-distrib/
# Clean up logs older than 24 hours on worker node
echo "Cleaning up logs older than 24 hours on worker node"
# Note: Not restarting services to avoid disruption
# Instead, properly closing files in the v2v-helper code
# Force delete old log files
find /var/log/pf9 -type f -mtime +1 -delete 2>/dev/null || true
# Clear deleted but open files
echo "Clearing deleted but open files..."
lsof +L1 | grep "/var/log/pf9" | awk '{print $2}' | xargs -r kill -HUP 2>/dev/null || true
# Free up disk space by clearing caches
sync
echo 3 > /proc/sys/vm/drop_caches 2>/dev/null || true
echo "Syncing from rsync://${MASTER_IP}"
rsync -avz rsync://${MASTER_IP}/vmwarelib/ /home/ubuntu/vmware-vix-disklib-distrib/
# Sync logs from worker to master
rsync -avz /var/log/pf9 rsync://${MASTER_IP}/worker-logs
# Also Sync logs from master to worker
rsync -avz rsync://${MASTER_IP}/master-logs /var/log/pf9
# Sync logs from worker to master (with delete flag to sync deletions too)
rsync -avz --delete /var/log/pf9 rsync://${MASTER_IP}/worker-logs
# Sync virtio-win drivers from master to worker
rsync -avz rsync://${MASTER_IP}/virtio-win /home/ubuntu/virtio-win
+3 -1
View File
@@ -6,4 +6,6 @@ metadata:
data:
version: ${TAG}
upgradeAvailable: "false"
upgradeVersion: ""
upgradeVersion: ""
githubOwner: "" # Optional: Defaults to "platform9" if not set
githubRepo: "" # Optional: Defaults to "vjailbreak" if not set
@@ -0,0 +1,13 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: vjailbreak-settings
namespace: migration-system
data:
CHANGED_BLOCKS_COPY_ITERATION_THRESHOLD: "20" # number of iterations to copy changed blocks
VM_ACTIVE_WAIT_INTERVAL_SECONDS: "20" # interval to wait for vm to become active
VM_ACTIVE_WAIT_RETRY_LIMIT: "15" # number of retries to wait for vm to become active
DEFAULT_MIGRATION_METHOD: "hot" # supported value hot/cold, (This setting is not used as of now. To be used by UI)
VCENTER_SCAN_CONCURRENCY_LIMIT: "10" # max number of vms to scan at the same time
CLEANUP_VOLUMES_AFTER_CONVERT_FAILURE: "false" # cleanup volumes after disk convert failure
POPULATE_VMWARE_MACHINE_FLAVORS: "true" # automatically populate VMwareMachine objects with OpenStack flavors
+39
View File
@@ -0,0 +1,39 @@
# v0.3.0
- **Tag:** `v0.3.0`
- **Published:** 2025-07-31T13:37:39Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.0
## Release Notes
## What's Changed
* RDM disk migration from VMware to Openstack on Same SAN array - if RDM is attached to single VM by @rishabh625 in https://github.com/platform9/vjailbreak/pull/654
* persist host dns by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/735
* fix for long vm names by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/738
* additional vm name changes (release) by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/746
* process single VM at a time by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/749
* Feature: add volume backend to openstackcreds custom resource by @rishabh625 in https://github.com/platform9/vjailbreak/pull/745
* v2v-helper: log time taken by disk copy and conversion by @jessicaralhan in https://github.com/platform9/vjailbreak/pull/737
* throttle goroutines by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/758
* unblock vcenter with no clusters by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/755
* added option to select security group by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/761
* Delete rolling migration plan by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/754
* Reset migrated status on migration object deletion by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/744
* configurable vjb settings (release) by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/762
* added amplitude changes by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/765
* Adding time elapsed for migration and cluster conversions + fixed the … by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/767
* Improve ESXi host configuration UX by removing selection confusion by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/757
* Disconnect all Virtual NICs on VMWare Source VM upon successful migration by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/768
* Backend: rhel family guest network ip retention ( release ) by @spai-p9 in https://github.com/platform9/vjailbreak/pull/766
* v0.3.0 fixes for SG and os creds validation by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/773
* fix ui for clusters by @spai-p9 in https://github.com/platform9/vjailbreak/pull/775
* Fix time elapsed issue by @spai-p9 in https://github.com/platform9/vjailbreak/pull/776
* fix for wait active timeout by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/777
* fix vpwned unavailable issue by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/779
* idle connection timeout for vcenter by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/781
* revert back to metadata name by @spai-p9 in https://github.com/platform9/vjailbreak/pull/780
## New Contributors
* @jessicaralhan made their first contribution in https://github.com/platform9/vjailbreak/pull/737
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.2.1...v0.3.0
+21
View File
@@ -0,0 +1,21 @@
# v0.3.1
- **Tag:** `v0.3.1`
- **Published:** 2025-08-07T13:13:27Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.1
## Release Notes
## What's Changed
* Feature: Addition of rdm disk custom resource and controller by @rishabh625 in https://github.com/platform9/vjailbreak/pull/753
* re-auth vcenter after timeout by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/787
* reduce default vm scan concurrency, improve logging by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/791
* Add fallback if /etc/os-release doesn't exist by @spai-p9 in https://github.com/platform9/vjailbreak/pull/772
* bring back dhcp for non-matching subnets by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/795
* amplitude and bugsnag integration (release) by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/769
* fix vm refresh for new govomi clients by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/803
* fix: one of the status.phase correctly renamed from pending to available by @rishabh625 in https://github.com/platform9/vjailbreak/pull/806
* Add vjailbreak-settings.yaml ( release ) by @spai-p9 in https://github.com/platform9/vjailbreak/pull/808
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.0...v0.3.1
+31
View File
@@ -0,0 +1,31 @@
# v0.3.2
- **Tag:** `v0.3.2`
- **Published:** 2025-08-26T11:39:44Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.2
## Release Notes
## What's Changed
* handle for sles by @spai-p9 in https://github.com/platform9/vjailbreak/pull/815
* make the power off live vms default when selected and add completed at column. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/813
* UI: Do admin cutover via UI by @spai-p9 in https://github.com/platform9/vjailbreak/pull/810
* Added polling for QCOW2 image before docs update by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/804
* add a setting to keep the copied volumes in case of failure by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/823
* optimisations for openstack creds upload time by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/829
* fix dasboard count mismatch by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/826
* optimise disk pressure problem due to logs by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/832
* In-place upgrade by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/792
* Filtering security group according to particular tenant by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/824
* change completed at to created at by @spai-p9 in https://github.com/platform9/vjailbreak/pull/835
* Support Dynamic Hotplug-Enabled Flavors in Target Openstack Environment by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/838
* crd update and ui changes required for hotplug by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/842
* indicate missing base flavor for specific vmwaremachine by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/843
* search option(s) for faster migration triggers by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/844
* Fix label getting triggered back to no, when patched by @spai-p9 in https://github.com/platform9/vjailbreak/pull/847
* Push things to S3 and introduce nightly builds (release) by @sharma-tapas @sarika-p9 in https://github.com/platform9/vjailbreak/pull/793
* search for volume types and networks by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/849
* added alert in the ui while upgrade in progress by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/850
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.1...v0.3.2
+22
View File
@@ -0,0 +1,22 @@
# v0.3.3
- **Tag:** `v0.3.3`
- **Published:** 2025-09-04T12:15:48Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.3
## Release Notes
## What's Changed
* Fixed artifacts availability check by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/851
* fill networks based on network devices by @spai-p9 in https://github.com/platform9/vjailbreak/pull/846
* equate mac id case insensitive by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/857
* get bootable index for windows LDM by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/855
* Added MAX Keys to hotplug metadata and made it specific to PCD by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/860
* UI and backend for multiple ip by @spai-p9 in https://github.com/platform9/vjailbreak/pull/833
* Fix admin cutover by @spai-p9 in https://github.com/platform9/vjailbreak/pull/862
* locked versions for nbdkit by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/865
* fetch rpm from main by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/870
* Fixed the os assigment in the migration form by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/867
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.2...v0.3.3