Compare commits

..
6 Commits
Author SHA1 Message Date
OmkarDeshpande7 47983006c0 Add release v0.4.0 2026-09-15 22:49:07 +05:30
OmkarDeshpande7 b1a4209926 Add release v0.3.8 2026-09-15 22:48:58 +05:30
OmkarDeshpande7 8d140beca7 Add release v0.3.7 2026-09-15 22:48:48 +05:30
OmkarDeshpande7 817b00fdc0 Add release v0.3.6 2026-09-15 22:48:38 +05:30
OmkarDeshpande7 16583b180f Add release v0.3.5 2026-09-15 22:48:28 +05:30
OmkarDeshpande7 610dd94bb9 Add release v0.3.4 2026-09-15 22:48:19 +05:30
12 changed files with 1598 additions and 259 deletions
+543 -196
View File
@@ -9,6 +9,295 @@ metadata:
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: arraycreds.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ArrayCreds
listKind: ArrayCredsList
plural: arraycreds
singular: arraycreds
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.vendorType
name: Vendor
type: string
- jsonPath: .spec.openstackMapping.volumeType
name: VolumeType
type: string
- jsonPath: .spec.openstackMapping.cinderBackendName
name: Backend
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.arrayValidationStatus
name: Status
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ArrayCreds is the Schema for the storage array credentials API that defines authentication
and connection details for storage arrays. It provides a secure way to store and validate
storage array credentials for use in migration operations, supporting multiple vendors, but as of now
We have qualified pure storage flash array.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ArrayCredsSpec defines the desired state of ArrayCreds
properties:
autoDiscovered:
description: AutoDiscovered indicates if this ArrayCreds was auto-discovered
from OpenStack
type: boolean
openstackMapping:
description: OpenStackMapping is the openstack mapping for this array
properties:
cinderBackendName:
description: |-
CinderBackendName is the Cinder backend name for this mapping
This is the backend configured in cinder.conf (e.g., "pure-01")
type: string
cinderBackendPool:
description: CinderBackendPool is the pool name within the backend
(optional)
type: string
cinderHost:
description: |-
CinderHost is the full Cinder host string for manage API
Format: hostname@backend or hostname@backend#pool (e.g., "pcd-ce@pure-iscsi-1#vt-pure-iscsi")
type: string
volumeType:
description: VolumeType is the Cinder volume type associated with
this mapping
type: string
required:
- cinderBackendName
- volumeType
type: object
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
storage array credentials
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
vendorType:
description: VendorType is the storage array vendor type (e.g., pure,
ontap, hpalletra)
type: string
required:
- vendorType
type: object
status:
description: ArrayCredsStatus defines the observed state of ArrayCreds
properties:
arrayValidationMessage:
description: ArrayValidationMessage is the message associated with
the storage array validation
type: string
arrayValidationStatus:
description: |-
ArrayValidationStatus is the status of the storage array validation
Possible values: Pending, Succeeded, Failed, AwaitingCredentials
type: string
dataStore:
description: DataStore is the list of datastores associated with this
array
items:
description: DatastoreInfo holds datastore information including
backing device NAA
properties:
backingNAA:
type: string
backingUUID:
type: string
capacity:
format: int64
type: integer
freeSpace:
format: int64
type: integer
moID:
type: string
name:
type: string
type:
type: string
required:
- backingNAA
- backingUUID
- capacity
- freeSpace
- moID
- name
- type
type: object
type: array
phase:
description: |-
Phase indicates the current phase of the ArrayCreds
Possible values: Discovered, Configured, Validated, Failed
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: arraycredsmappings.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ArrayCredsMapping
listKind: ArrayCredsMappingList
plural: arraycredsmappings
singular: arraycredsmapping
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ArrayCredsMapping is the Schema for the arraycredsmappings API that defines
mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy storage migration
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
ArrayCredsMappingSpec defines the desired state of ArrayCredsMapping including
mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy data copy
properties:
mappings:
description: Mappings is a list of datastore to ArrayCreds mappings
items:
description: DatastoreArrayCredsMapping represents a mapping between
a VMware datastore and ArrayCreds
properties:
source:
description: Source is the name of the source datastore in VMware
type: string
target:
description: Target is the name of the ArrayCreds resource to
use for this datastore
type: string
required:
- source
- target
type: object
type: array
required:
- mappings
type: object
status:
description: ArrayCredsMappingStatus defines the observed state of ArrayCredsMapping
properties:
validationMessage:
description: |-
ValidationMessage provides detailed validation information including
information about available ArrayCreds and any validation errors
type: string
validationStatus:
description: |-
ValidationStatus indicates the validation status of the ArrayCreds mapping
Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed"
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
@@ -459,7 +748,28 @@ spec:
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
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:
type: boolean
firstBootScript:
default: echo "Add your startup script here!"
type: string
@@ -470,6 +780,9 @@ spec:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
@@ -513,13 +826,12 @@ spec:
suffix:
type: string
type: object
retry:
description: Retry the migration if it fails
type: boolean
securityGroups:
items:
type: string
type: array
serverGroup:
type: string
virtualMachines:
description: VirtualMachines is a list of virtual machines to be migrated
items:
@@ -611,6 +923,11 @@ spec:
spec:
description: Spec defines the desired state of Migration
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:
description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
@@ -622,6 +939,13 @@ spec:
migrationPlan:
description: MigrationPlan is the name of the migration plan
type: string
migrationType:
description: MigrationType indicates whether this is a hot (live)
or cold migration
enum:
- hot
- cold
type: string
podRef:
description: PodRef is the name of the pod
type: string
@@ -688,11 +1012,17 @@ spec:
- type
type: object
type: array
currentDisk:
description: |-
CurrentDisk tracks which disk is currently being copied (e.g., "0", "1")
Extracted from migration pod events
type: string
phase:
description: Phase is the current phase of the migration
enum:
- Pending
- Validating
- ValidationFailed
- AwaitingDataCopyStart
- CopyingBlocks
- CopyingChangedBlocks
@@ -702,7 +1032,23 @@ spec:
- Succeeded
- Failed
- Unknown
- ConnectingToESXi
- CreatingInitiatorGroup
- CreatingVolume
- ImportingToCinder
- MappingVolume
- RescanningStorage
- XCOPYInProgress
type: string
retryable:
description: |-
Retryable indicates whether this migration can be retried when it fails.
Set to false for VMs with RDM (Raw Device Mapping) disks that share storage,
as RDM disk migration state prevents automatic retry.
type: boolean
totalDisks:
description: TotalDisks is the total number of disks to be migrated
type: integer
required:
- phase
type: object
@@ -758,6 +1104,11 @@ spec:
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
including source/destination environments and mappings
properties:
arrayCredsMapping:
description: |-
ArrayCredsMapping is the reference to the ArrayCredsMapping resource that defines datastore to ArrayCreds mappings
This is used for StorageAcceleratedCopy data copy method
type: string
destination:
description: Destination is the destination details for the virtual
machine
@@ -789,9 +1140,19 @@ spec:
required:
- vmwareRef
type: object
storageCopyMethod:
default: normal
description: |-
StorageCopyMethod indicates the method to use for storage migration
Valid values: "normal" (default), "StorageAcceleratedCopy"
enum:
- normal
- StorageAcceleratedCopy
type: string
storageMapping:
description: StorageMapping is the reference to the StorageMapping
resource that defines source to destination storage mappings
description: |-
StorageMapping is the reference to the StorageMapping resource that defines source to destination storage mappings
This is used for normal data copy method
type: string
targetPCDClusterName:
description: TargetPCDClusterName is the name of the PCD cluster where
@@ -801,6 +1162,10 @@ spec:
description: UseFlavorless indicates if the migration should use flavorless
VM creation for PCD.
type: boolean
useGPUFlavor:
description: UseGPUFlavor indicates if the migration should filter
and use GPU-enabled flavors.
type: boolean
virtioWinDriver:
description: VirtioWinDriver is the driver to be used for the virtual
machine
@@ -809,7 +1174,6 @@ spec:
- destination
- networkMapping
- source
- storageMapping
type: object
type: object
served: true
@@ -977,6 +1341,15 @@ spec:
disk:
description: Disk is the amount of root disk, measured in GB.
type: integer
extra_specs:
additionalProperties:
type: string
description: |-
Properties is a dictionary of the flavor’s extra-specs key-and-value
pairs. This will only be included if the user is allowed by policy to
index flavor extra_specs
New in version 2.61
type: object
id:
description: ID is the flavor's unique ID.
type: string
@@ -1001,6 +1374,7 @@ spec:
- OS-FLV-EXT-DATA:ephemeral
- description
- disk
- extra_specs
- id
- name
- os-flavor-access:is_public
@@ -1009,6 +1383,22 @@ spec:
- vcpus
type: object
type: array
osAuthToken:
type: string
osAuthUrl:
type: string
osDomainName:
type: string
osInsecure:
type: boolean
osPassword:
type: string
osRegionName:
type: string
osTenantName:
type: string
osUsername:
type: string
pcdHostConfig:
description: PCDHostConfig is the list of available clusters in openstack
items:
@@ -1037,6 +1427,9 @@ spec:
type: string
type: object
type: array
projectName:
description: ProjectName is the name of the project in openstack
type: string
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
OpenStack credentials
@@ -1109,6 +1502,25 @@ spec:
- requiresIdDisplay
type: object
type: array
serverGroups:
items:
description: ServerGroupInfo holds the server group name, ID,
and policy information
properties:
id:
type: string
members:
type: integer
name:
type: string
policy:
type: string
required:
- id
- name
- policy
type: object
type: array
volumeBackends:
items:
type: string
@@ -1340,7 +1752,7 @@ spec:
- name: v1alpha1
schema:
openAPIV3Schema:
description: RDMDisk is the Schema for the rdmdisks API.
description: RDMDisk is the Schema for the RDMDisks API.
properties:
apiVersion:
description: |-
@@ -1386,10 +1798,6 @@ spec:
type: object
volumeType:
type: string
required:
- cinderBackendPool
- source
- volumeType
type: object
ownerVMs:
items:
@@ -1401,7 +1809,6 @@ spec:
- diskName
- diskSize
- displayName
- openstackVolumeRef
- ownerVMs
- uuid
type: object
@@ -1544,6 +1951,18 @@ spec:
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
type: object
bmConfigRef:
description: BMConfigRef is the reference to the BMC credentials
@@ -1650,6 +2069,9 @@ spec:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
@@ -1693,9 +2115,6 @@ spec:
suffix:
type: string
type: object
retry:
description: Retry the migration if it fails
type: boolean
vmMigrationPlans:
description: VMMigrationPlans is the reference to the VM migration
plan
@@ -1976,6 +2395,18 @@ spec:
openstackImageID:
description: OpenstackImageID is the image of the VM
type: string
openstackSecurityGroups:
description: |-
OpenstackSecurityGroups is the list of security groups for the VM
If empty, the security groups will be determined from the master node
items:
type: string
type: array
openstackVolumeType:
description: |-
OpenstackVolumeType is the volume type for the root disk of the VM
If empty, the volume type will be determined from the master node
type: string
required:
- nodeRole
- openstackCreds
@@ -2173,8 +2604,9 @@ spec:
type: string
type: object
x-kubernetes-map-type: atomic
required:
- datacenter
vcenterHost:
description: VcenterHost is the vCenter host
type: string
type: object
status:
description: VMwareCredsStatus defines the observed state of VMwareCreds
@@ -2331,11 +2763,35 @@ spec:
disks:
description: Disks is the list of disks for the virtual machine
items:
type: string
description: Disk represents a virtual disk attached to a virtual
machine
properties:
capacityGB:
type: integer
datastore:
type: string
datastoreId:
type: string
name:
type: string
type: object
type: array
esxiName:
description: ESXiName is the name of the ESXi host
type: string
gpu:
description: GPU contains information about GPU devices attached
to the VM
properties:
passthroughCount:
description: PassthroughCount is the number of PCI passthrough
GPU devices
type: integer
vgpuCount:
description: VGPUCount is the number of vGPU (shared GPU)
devices
type: integer
type: object
guestNetworks:
description: GuestNetworks is the list of network interfaces for
the virtual machine as reported by the guest
@@ -2399,42 +2855,7 @@ spec:
description: RDMDisks is the list of RDM disks for the virtual
machine
items:
description: RDMDiskInfo contains information about a Raw Device
Mapping (RDM) disk
properties:
diskName:
description: DiskName is the name of the disk
type: string
diskSize:
description: DiskSize is the size of the disk in GB
format: int64
type: integer
displayName:
description: DisplayName is the display name of the disk
type: string
openstackVolumeRef:
description: OpenstackVolumeRef contains OpenStack volume
reference information
properties:
cinderBackendPool:
description: CinderBackendPool is the cinder backend
pool of the disk
type: string
volumeRef:
additionalProperties:
type: string
description: VolumeRef is the reference to the OpenStack
volume
type: object
volumeType:
description: VolumeType is the volume type of the disk
type: string
type: object
uuid:
description: UUID (VML id) is the unique identifier of the
disk
type: string
type: object
type: string
type: array
vmState:
description: VMState is the state of the virtual machine
@@ -2671,8 +3092,11 @@ rules:
- ""
resources:
- configmaps
- namespaces
- pods
- secrets
- serviceaccounts
- services
verbs:
- create
- delete
@@ -2681,6 +3105,15 @@ rules:
- patch
- update
- watch
- apiGroups:
- ""
resources:
- configmaps/status
- pods/status
verbs:
- get
- patch
- update
- apiGroups:
- ""
resources:
@@ -2701,11 +3134,10 @@ rules:
- apiGroups:
- ""
resources:
- pods/status
- pods/log
verbs:
- get
- patch
- update
- list
- apiGroups:
- apiextensions.k8s.io
resources:
@@ -2742,9 +3174,37 @@ rules:
- patch
- update
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
- clusterroles
- rolebindings
- roles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds
- bmconfigs
- clustermigrations
- esximigrations
@@ -2774,6 +3234,7 @@ rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/finalizers
- bmconfigs/finalizers
- clustermigrations/finalizers
- esximigrations/finalizers
@@ -2793,6 +3254,7 @@ rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/status
- bmconfigs/status
- clustermigrations/status
- esximigrations/status
@@ -3618,6 +4080,23 @@ subjects:
name: migration-controller-manager
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migration-controller-manager-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: migration-controller-manager
namespace: migration-system
---
apiVersion: v1
kind: Service
metadata:
@@ -3632,150 +4111,17 @@ spec:
app: vpwned-sdk
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
control-plane: controller-manager
name: migration-controller-manager
namespace: migration-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
labels:
control-plane: controller-manager
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
containers:
- args:
- --leader-elect=false
- --health-probe-bind-address=:8081
command:
- /manager
image: quay.io/platform9/vjailbreak-controller:v0.3.3
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- sleep 5
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
name: manager
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
cpu: 200m
memory: 256Mi
volumeMounts:
- mountPath: /etc/pf9/k3s
name: master-token
- mountPath: /home/ubuntu
name: vddk
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
securityContext:
runAsGroup: 0
runAsUser: 0
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /var/lib/rancher/k3s/server
type: Directory
name: master-token
- hostPath:
path: /home/ubuntu
type: Directory
name: vddk
- hostPath:
path: /etc/hosts
type: File
name: hosts-file
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: vpwned-sdk
name: migration-vpwned-sdk
namespace: migration-system
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: vpwned-sdk
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: vpwned-sdk
spec:
containers:
- image: quay.io/platform9/vjailbreak-vpwned:v0.3.3
imagePullPolicy: IfNotPresent
name: vpwned
ports:
- containerPort: 3001
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /etc/hosts
type: File
name: hosts-file
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-body-size: 500m
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
name: migration-vpwned-ingress
@@ -3792,3 +4138,4 @@ spec:
number: 80
path: /dev-api/sdk/(.*)
pathType: ImplementationSpecific
---
+11
View File
@@ -20,6 +20,7 @@ spec:
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
@@ -42,6 +43,14 @@ metadata:
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"
nginx.ingress.kubernetes.io/proxy-body-size: "500m"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
spec:
ingressClassName: nginx
rules:
@@ -64,6 +73,8 @@ metadata:
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:
@@ -9,6 +9,295 @@ metadata:
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: arraycreds.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ArrayCreds
listKind: ArrayCredsList
plural: arraycreds
singular: arraycreds
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.vendorType
name: Vendor
type: string
- jsonPath: .spec.openstackMapping.volumeType
name: VolumeType
type: string
- jsonPath: .spec.openstackMapping.cinderBackendName
name: Backend
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.arrayValidationStatus
name: Status
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ArrayCreds is the Schema for the storage array credentials API that defines authentication
and connection details for storage arrays. It provides a secure way to store and validate
storage array credentials for use in migration operations, supporting multiple vendors, but as of now
We have qualified pure storage flash array.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ArrayCredsSpec defines the desired state of ArrayCreds
properties:
autoDiscovered:
description: AutoDiscovered indicates if this ArrayCreds was auto-discovered
from OpenStack
type: boolean
openstackMapping:
description: OpenStackMapping is the openstack mapping for this array
properties:
cinderBackendName:
description: |-
CinderBackendName is the Cinder backend name for this mapping
This is the backend configured in cinder.conf (e.g., "pure-01")
type: string
cinderBackendPool:
description: CinderBackendPool is the pool name within the backend
(optional)
type: string
cinderHost:
description: |-
CinderHost is the full Cinder host string for manage API
Format: hostname@backend or hostname@backend#pool (e.g., "pcd-ce@pure-iscsi-1#vt-pure-iscsi")
type: string
volumeType:
description: VolumeType is the Cinder volume type associated with
this mapping
type: string
required:
- cinderBackendName
- volumeType
type: object
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
storage array credentials
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
vendorType:
description: VendorType is the storage array vendor type (e.g., pure,
ontap, hpalletra)
type: string
required:
- vendorType
type: object
status:
description: ArrayCredsStatus defines the observed state of ArrayCreds
properties:
arrayValidationMessage:
description: ArrayValidationMessage is the message associated with
the storage array validation
type: string
arrayValidationStatus:
description: |-
ArrayValidationStatus is the status of the storage array validation
Possible values: Pending, Succeeded, Failed, AwaitingCredentials
type: string
dataStore:
description: DataStore is the list of datastores associated with this
array
items:
description: DatastoreInfo holds datastore information including
backing device NAA
properties:
backingNAA:
type: string
backingUUID:
type: string
capacity:
format: int64
type: integer
freeSpace:
format: int64
type: integer
moID:
type: string
name:
type: string
type:
type: string
required:
- backingNAA
- backingUUID
- capacity
- freeSpace
- moID
- name
- type
type: object
type: array
phase:
description: |-
Phase indicates the current phase of the ArrayCreds
Possible values: Discovered, Configured, Validated, Failed
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: arraycredsmappings.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ArrayCredsMapping
listKind: ArrayCredsMappingList
plural: arraycredsmappings
singular: arraycredsmapping
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ArrayCredsMapping is the Schema for the arraycredsmappings API that defines
mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy storage migration
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
ArrayCredsMappingSpec defines the desired state of ArrayCredsMapping including
mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy data copy
properties:
mappings:
description: Mappings is a list of datastore to ArrayCreds mappings
items:
description: DatastoreArrayCredsMapping represents a mapping between
a VMware datastore and ArrayCreds
properties:
source:
description: Source is the name of the source datastore in VMware
type: string
target:
description: Target is the name of the ArrayCreds resource to
use for this datastore
type: string
required:
- source
- target
type: object
type: array
required:
- mappings
type: object
status:
description: ArrayCredsMappingStatus defines the observed state of ArrayCredsMapping
properties:
validationMessage:
description: |-
ValidationMessage provides detailed validation information including
information about available ArrayCreds and any validation errors
type: string
validationStatus:
description: |-
ValidationStatus indicates the validation status of the ArrayCreds mapping
Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed"
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
@@ -459,7 +748,28 @@ spec:
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
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:
type: boolean
firstBootScript:
default: echo "Add your startup script here!"
type: string
@@ -470,6 +780,9 @@ spec:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
@@ -513,13 +826,12 @@ spec:
suffix:
type: string
type: object
retry:
description: Retry the migration if it fails
type: boolean
securityGroups:
items:
type: string
type: array
serverGroup:
type: string
virtualMachines:
description: VirtualMachines is a list of virtual machines to be migrated
items:
@@ -611,6 +923,11 @@ spec:
spec:
description: Spec defines the desired state of Migration
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:
description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
@@ -622,6 +939,13 @@ spec:
migrationPlan:
description: MigrationPlan is the name of the migration plan
type: string
migrationType:
description: MigrationType indicates whether this is a hot (live)
or cold migration
enum:
- hot
- cold
type: string
podRef:
description: PodRef is the name of the pod
type: string
@@ -688,11 +1012,17 @@ spec:
- type
type: object
type: array
currentDisk:
description: |-
CurrentDisk tracks which disk is currently being copied (e.g., "0", "1")
Extracted from migration pod events
type: string
phase:
description: Phase is the current phase of the migration
enum:
- Pending
- Validating
- ValidationFailed
- AwaitingDataCopyStart
- CopyingBlocks
- CopyingChangedBlocks
@@ -702,7 +1032,23 @@ spec:
- Succeeded
- Failed
- Unknown
- ConnectingToESXi
- CreatingInitiatorGroup
- CreatingVolume
- ImportingToCinder
- MappingVolume
- RescanningStorage
- XCOPYInProgress
type: string
retryable:
description: |-
Retryable indicates whether this migration can be retried when it fails.
Set to false for VMs with RDM (Raw Device Mapping) disks that share storage,
as RDM disk migration state prevents automatic retry.
type: boolean
totalDisks:
description: TotalDisks is the total number of disks to be migrated
type: integer
required:
- phase
type: object
@@ -758,6 +1104,11 @@ spec:
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
including source/destination environments and mappings
properties:
arrayCredsMapping:
description: |-
ArrayCredsMapping is the reference to the ArrayCredsMapping resource that defines datastore to ArrayCreds mappings
This is used for StorageAcceleratedCopy data copy method
type: string
destination:
description: Destination is the destination details for the virtual
machine
@@ -789,9 +1140,19 @@ spec:
required:
- vmwareRef
type: object
storageCopyMethod:
default: normal
description: |-
StorageCopyMethod indicates the method to use for storage migration
Valid values: "normal" (default), "StorageAcceleratedCopy"
enum:
- normal
- StorageAcceleratedCopy
type: string
storageMapping:
description: StorageMapping is the reference to the StorageMapping
resource that defines source to destination storage mappings
description: |-
StorageMapping is the reference to the StorageMapping resource that defines source to destination storage mappings
This is used for normal data copy method
type: string
targetPCDClusterName:
description: TargetPCDClusterName is the name of the PCD cluster where
@@ -801,6 +1162,10 @@ spec:
description: UseFlavorless indicates if the migration should use flavorless
VM creation for PCD.
type: boolean
useGPUFlavor:
description: UseGPUFlavor indicates if the migration should filter
and use GPU-enabled flavors.
type: boolean
virtioWinDriver:
description: VirtioWinDriver is the driver to be used for the virtual
machine
@@ -809,7 +1174,6 @@ spec:
- destination
- networkMapping
- source
- storageMapping
type: object
type: object
served: true
@@ -977,6 +1341,15 @@ spec:
disk:
description: Disk is the amount of root disk, measured in GB.
type: integer
extra_specs:
additionalProperties:
type: string
description: |-
Properties is a dictionary of the flavor’s extra-specs key-and-value
pairs. This will only be included if the user is allowed by policy to
index flavor extra_specs
New in version 2.61
type: object
id:
description: ID is the flavor's unique ID.
type: string
@@ -1001,6 +1374,7 @@ spec:
- OS-FLV-EXT-DATA:ephemeral
- description
- disk
- extra_specs
- id
- name
- os-flavor-access:is_public
@@ -1009,6 +1383,22 @@ spec:
- vcpus
type: object
type: array
osAuthToken:
type: string
osAuthUrl:
type: string
osDomainName:
type: string
osInsecure:
type: boolean
osPassword:
type: string
osRegionName:
type: string
osTenantName:
type: string
osUsername:
type: string
pcdHostConfig:
description: PCDHostConfig is the list of available clusters in openstack
items:
@@ -1037,6 +1427,9 @@ spec:
type: string
type: object
type: array
projectName:
description: ProjectName is the name of the project in openstack
type: string
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
OpenStack credentials
@@ -1109,6 +1502,25 @@ spec:
- requiresIdDisplay
type: object
type: array
serverGroups:
items:
description: ServerGroupInfo holds the server group name, ID,
and policy information
properties:
id:
type: string
members:
type: integer
name:
type: string
policy:
type: string
required:
- id
- name
- policy
type: object
type: array
volumeBackends:
items:
type: string
@@ -1340,7 +1752,7 @@ spec:
- name: v1alpha1
schema:
openAPIV3Schema:
description: RDMDisk is the Schema for the rdmdisks API.
description: RDMDisk is the Schema for the RDMDisks API.
properties:
apiVersion:
description: |-
@@ -1386,10 +1798,6 @@ spec:
type: object
volumeType:
type: string
required:
- cinderBackendPool
- source
- volumeType
type: object
ownerVMs:
items:
@@ -1401,7 +1809,6 @@ spec:
- diskName
- diskSize
- displayName
- openstackVolumeRef
- ownerVMs
- uuid
type: object
@@ -1544,6 +1951,18 @@ spec:
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
type: object
bmConfigRef:
description: BMConfigRef is the reference to the BMC credentials
@@ -1650,6 +2069,9 @@ spec:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
@@ -1693,9 +2115,6 @@ spec:
suffix:
type: string
type: object
retry:
description: Retry the migration if it fails
type: boolean
vmMigrationPlans:
description: VMMigrationPlans is the reference to the VM migration
plan
@@ -1976,6 +2395,18 @@ spec:
openstackImageID:
description: OpenstackImageID is the image of the VM
type: string
openstackSecurityGroups:
description: |-
OpenstackSecurityGroups is the list of security groups for the VM
If empty, the security groups will be determined from the master node
items:
type: string
type: array
openstackVolumeType:
description: |-
OpenstackVolumeType is the volume type for the root disk of the VM
If empty, the volume type will be determined from the master node
type: string
required:
- nodeRole
- openstackCreds
@@ -2173,8 +2604,9 @@ spec:
type: string
type: object
x-kubernetes-map-type: atomic
required:
- datacenter
vcenterHost:
description: VcenterHost is the vCenter host
type: string
type: object
status:
description: VMwareCredsStatus defines the observed state of VMwareCreds
@@ -2331,11 +2763,35 @@ spec:
disks:
description: Disks is the list of disks for the virtual machine
items:
type: string
description: Disk represents a virtual disk attached to a virtual
machine
properties:
capacityGB:
type: integer
datastore:
type: string
datastoreId:
type: string
name:
type: string
type: object
type: array
esxiName:
description: ESXiName is the name of the ESXi host
type: string
gpu:
description: GPU contains information about GPU devices attached
to the VM
properties:
passthroughCount:
description: PassthroughCount is the number of PCI passthrough
GPU devices
type: integer
vgpuCount:
description: VGPUCount is the number of vGPU (shared GPU)
devices
type: integer
type: object
guestNetworks:
description: GuestNetworks is the list of network interfaces for
the virtual machine as reported by the guest
@@ -2399,42 +2855,7 @@ spec:
description: RDMDisks is the list of RDM disks for the virtual
machine
items:
description: RDMDiskInfo contains information about a Raw Device
Mapping (RDM) disk
properties:
diskName:
description: DiskName is the name of the disk
type: string
diskSize:
description: DiskSize is the size of the disk in GB
format: int64
type: integer
displayName:
description: DisplayName is the display name of the disk
type: string
openstackVolumeRef:
description: OpenstackVolumeRef contains OpenStack volume
reference information
properties:
cinderBackendPool:
description: CinderBackendPool is the cinder backend
pool of the disk
type: string
volumeRef:
additionalProperties:
type: string
description: VolumeRef is the reference to the OpenStack
volume
type: object
volumeType:
description: VolumeType is the volume type of the disk
type: string
type: object
uuid:
description: UUID (VML id) is the unique identifier of the
disk
type: string
type: object
type: string
type: array
vmState:
description: VMState is the state of the virtual machine
@@ -2671,8 +3092,11 @@ rules:
- ""
resources:
- configmaps
- namespaces
- pods
- secrets
- serviceaccounts
- services
verbs:
- create
- delete
@@ -2681,6 +3105,15 @@ rules:
- patch
- update
- watch
- apiGroups:
- ""
resources:
- configmaps/status
- pods/status
verbs:
- get
- patch
- update
- apiGroups:
- ""
resources:
@@ -2701,11 +3134,10 @@ rules:
- apiGroups:
- ""
resources:
- pods/status
- pods/log
verbs:
- get
- patch
- update
- list
- apiGroups:
- apiextensions.k8s.io
resources:
@@ -2742,9 +3174,37 @@ rules:
- patch
- update
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
- clusterroles
- rolebindings
- roles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds
- bmconfigs
- clustermigrations
- esximigrations
@@ -2774,6 +3234,7 @@ rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/finalizers
- bmconfigs/finalizers
- clustermigrations/finalizers
- esximigrations/finalizers
@@ -2793,6 +3254,7 @@ rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/status
- bmconfigs/status
- clustermigrations/status
- esximigrations/status
@@ -3618,6 +4080,23 @@ subjects:
name: migration-controller-manager
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migration-controller-manager-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: migration-controller-manager
namespace: migration-system
---
apiVersion: v1
kind: Service
metadata:
@@ -3632,11 +4111,173 @@ spec:
app: vpwned-sdk
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
control-plane: controller-manager
name: migration-controller-manager
namespace: migration-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
strategy:
type: Recreate
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
labels:
control-plane: controller-manager
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
containers:
- args:
- --leader-elect=false
- --health-probe-bind-address=:8081
command:
- /manager
env:
- name: MAX_CONCURRENT_RECONCILES
value: "5"
envFrom:
- configMapRef:
name: pf9-env
image: quay.io/platform9/vjailbreak-controller:v0.3.8
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- sleep 5
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
name: manager
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
cpu: 200m
memory: 256Mi
volumeMounts:
- mountPath: /etc/pf9/k3s
name: master-token
- mountPath: /home/ubuntu
name: vddk
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
securityContext:
runAsGroup: 0
runAsUser: 0
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /var/lib/rancher/k3s/server
type: Directory
name: master-token
- hostPath:
path: /home/ubuntu
type: Directory
name: vddk
- hostPath:
path: /etc/hosts
type: File
name: hosts-file
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: vpwned-sdk
name: migration-vpwned-sdk
namespace: migration-system
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: vpwned-sdk
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: vpwned-sdk
spec:
containers:
- envFrom:
- configMapRef:
name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.3.8
imagePullPolicy: IfNotPresent
name: vpwned
ports:
- containerPort: 3001
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
- mountPath: /home/ubuntu
name: vddk-storage
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /etc/hosts
type: File
name: hosts-file
- hostPath:
path: /home/ubuntu
type: DirectoryOrCreate
name: vddk-storage
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-body-size: 500m
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
name: migration-vpwned-ingress
@@ -3653,4 +4294,3 @@ spec:
number: 80
path: /dev-api/sdk/(.*)
pathType: ImplementationSpecific
---
+2 -2
View File
@@ -103,8 +103,8 @@ spec:
echo "Syncing from rsync://${MASTER_IP}"
rsync -avz rsync://${MASTER_IP}/vmwarelib/ /home/ubuntu/vmware-vix-disklib-distrib/
# 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 logs from worker to master
rsync -avz /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
+2 -1
View File
@@ -1,3 +1,4 @@
export IS_MASTER=true
export MASTER_IP=
export K3S_TOKEN=
export K3S_TOKEN=
export INSTALL_K3S_EXEC="server --secrets-encryption"
+22 -2
View File
@@ -5,9 +5,29 @@ metadata:
namespace: migration-system
data:
CHANGED_BLOCKS_COPY_ITERATION_THRESHOLD: "20" # number of iterations to copy changed blocks
PERIODIC_SYNC_INTERVAL: "1h" # interval to sync vCenter VMs
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)
DEFAULT_MIGRATION_METHOD: "cold" # 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
CLEANUP_PORTS_AFTER_MIGRATION_FAILURE: "false" # cleanup ports after migration failure
POPULATE_VMWARE_MACHINE_FLAVORS: "true" # automatically populate VMwareMachine objects with OpenStack flavors
VOLUME_AVAILABLE_WAIT_INTERVAL_SECONDS: "10" # interval to wait for volume to become available
VOLUME_AVAILABLE_WAIT_RETRY_LIMIT: "15" # number of retries to wait for volume to become available
VCENTER_LOGIN_RETRY_LIMIT: "5" # number of retries for vcenter login
OPENSTACK_CREDS_REQUEUE_AFTER_MINUTES: "60" # number of minutes to requeue after for openstack 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
DEPLOYMENT_NAME: vJailbreak
PERIODIC_SYNC_MAX_RETRIES: "3" # max number of retries for CBT sync
PERIODIC_SYNC_RETRY_CAP: "3h" # max retry interval for CBT sync
AUTO_FSTAB_UPDATE: "false" # automatically update fstab
AUTO_PXE_BOOT_ON_CONVERSION: "false" # automatically set machine to PXE boot during cluster conversion
V2V_HELPER_POD_CPU_REQUEST: "1000m"
V2V_HELPER_POD_MEMORY_REQUEST: "2Gi"
V2V_HELPER_POD_CPU_LIMIT: "2000m"
V2V_HELPER_POD_MEMORY_LIMIT: "5Gi"
V2V_HELPER_POD_EPHEMERAL_STORAGE_REQUEST: "3Gi"
V2V_HELPER_POD_EPHEMERAL_STORAGE_LIMIT: "3Gi"
+32
View File
@@ -0,0 +1,32 @@
# v0.3.4
- **Tag:** `v0.3.4`
- **Published:** 2025-09-16T13:29:31Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.4
## Release Notes
## What's Changed
* volume wait interval through settings by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/872
* logs all openstack calls that we make by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/873
* admin cut over poweroff sequence prevent user error by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/874
* Added cronjob to fetch for latest release and notify in UI by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/882
* bugfix: Add logic to assign IP from network interfaces if not already… by @rishabh625 in https://github.com/platform9/vjailbreak/pull/895
* create openstack ports before copy by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/879
* Admin cutover improve the pod label watch function by @spai-p9 in https://github.com/platform9/vjailbreak/pull/881
* remove --delete to not purge each others logs in master by @spai-p9 in https://github.com/platform9/vjailbreak/pull/904
* Advance option in UI to ask for fallback to DHCP if static IP assignment fails by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/906
* block on channel send to ensure initial label delivery by @spai-p9 in https://github.com/platform9/vjailbreak/pull/900
* Support for shared pRDM disk migration in vJailbreak, including all necessary controller changes and validation through testing with clustered Windows VMs using RDM disks by @rishabh625 in https://github.com/platform9/vjailbreak/pull/858
* Optimize OpenstackCreds reconciliation for scalability by @spai-p9 in https://github.com/platform9/vjailbreak/pull/908
* Change implementation from select to normal blocking channel. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/917
* bugfix: Add check for RDM disks in VM migration validation by @rishabh625 in https://github.com/platform9/vjailbreak/pull/915
* Added option in UI to retry Failed migrations by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/918
* changed MAAS to Bare-metal by @sarika-p9 in https://github.com/platform9/vjailbreak/pull/916
* Added static RPMs and versionlocked in dnf by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/921
* Add SELinux for nbdkit by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/923
* vmdataexporter cli arg validation by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/884
* Fixed fonts inconsistency in vJailbreak UI by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/898
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.3...v0.3.4
+55
View File
@@ -0,0 +1,55 @@
# v0.3.5
- **Tag:** `v0.3.5`
- **Published:** 2025-10-17T10:14:05Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.5
## Release Notes
## What's Changed
* Cache OpenStack instance metadata for performance and reliability by @spai-p9 in https://github.com/platform9/vjailbreak/pull/913
* disabled upgrade button while migrations are in progress by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/934
* disabled docs update workflow to run on release event by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/935
* Updated CRD Upgrade logic with missing permissions by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/933
* Bugfix: Added vmwaresession logged out, after retrieving data from vmware by @rishabh625 in https://github.com/platform9/vjailbreak/pull/939
* Changed description of a advanced option - Fallback to DHCP by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/948
* feat: View Migration pod logs from UI by @rishabh625 in https://github.com/platform9/vjailbreak/pull/942
* Add support to display rdm disk and populate rdm disk details in UI by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/926
* Refactor : VMwareMachine retrieval and validation in migration plan reconciliation by @rishabh625 in https://github.com/platform9/vjailbreak/pull/947
* Custom header for a vjailbreak deployment through configmap by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/958
* add creds requeue config to vjailbreak settings by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/965
* feat: Implement RDM disks validation and query integration in migration workflow by @rishabh625 in https://github.com/platform9/vjailbreak/pull/963
* feat: Set owner reference for RDM disks to ensure proper deletion with VMwareCreds by @rishabh625 in https://github.com/platform9/vjailbreak/pull/967
* feat: Enhance RDM validation to include configuration checks and improve error messaging by @rishabh625 in https://github.com/platform9/vjailbreak/pull/972
* fix: Update RDM disk migration retry logic and error handling by @rishabh625 in https://github.com/platform9/vjailbreak/pull/970
* Add a default password for Ubuntu user that needs to be changed on first boot by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/976
* List udev/fstab rules to preserve device mapping after migrations by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/905
* Disable selection of older date and time while scheduling cutover by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/960
* tls: remove cert trust logic, rely on OS_INSECURE for skipping verification by @jessicaralhan in https://github.com/platform9/vjailbreak/pull/863
* change controller rollout policy to re-create by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/979
* Fixed the bug where the script was not passed to the backend + update… by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/980
* feat: Enhance RDM disk info population by validating disk name before updating volume reference by @rishabh625 in https://github.com/platform9/vjailbreak/pull/984
* disabled log icon in ui (release) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/986
* disabled rdm config in UI (release) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/987
* enable k3s encryption at rest by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/990
* Added htpasswd based authentification for ui by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/994
* cache cred info for UI by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/996
* Removed secrets GET calls from UI by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/995
* Added command line utility to change and manage the user credentials for UI by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1002
* bugfix: add limit to log streaming - limit number of bytes by @rishabh625 in https://github.com/platform9/vjailbreak/pull/988
* Implemented automated HTTPS with Cert-Manager (release) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1005
* removed nonce from CSP by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1006
* Vjbctl - utility to add and manage users by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1003
* Vjbctl by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1010
* cronjob fix by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1013
* Add host entries to migration-vpwned-ingress by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1015
* Implemented HTTPS with Cert-Manager by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1021
* Updated default username from ubuntu to admin by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1023
* added --no-restart to the utility to vjbctl by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1024
* fixed count of selected vm by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1022
* Custom title on browser tab for each vjailbreak VM deployment by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1026
## New Contributors
* @meghansh-pf9 made their first contribution in https://github.com/platform9/vjailbreak/pull/958
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.4...v0.3.5
+89
View File
@@ -0,0 +1,89 @@
# v0.3.6
- **Tag:** `v0.3.6`
- **Published:** 2025-12-01T16:12:37Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.6
## Release Notes
## What's Changed
* fix - Migration only takes the first subnet while creating the ports by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1019
* Bugfix: sync annotation from VMware to RDM disk openstack volume reference if changed by @rishabh625 in https://github.com/platform9/vjailbreak/pull/993
* Added vjailbreak-settings ConfigMap and implement RDM owner VM validation toggle by @rishabh625 in https://github.com/platform9/vjailbreak/pull/953
* bugfix: previous PR introduced a issue where importToCinder was not g… by @rishabh625 in https://github.com/platform9/vjailbreak/pull/1033
* Fix - blocking port creation if dhcp is selected but VM doesn't have a valid IP by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1047
* Version Checker Cronjob exits gracefully in air-gapped environments by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1045
* enabled rdm configuration button by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1041
* bugfix: fix ImportToCinder to true from migrationplan controller by @rishabh625 in https://github.com/platform9/vjailbreak/pull/1038
* Added filter on migrations based on current status and current creation time by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/944
* Blocked migration of VM having unknown OS by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/1042
* Skip CopyingChagedBlocks phase when migration type is cold by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1055
* fix: changing from patch to update while modifying importToCinder fieeld of RDM CR, adding idempotent guard and retry on conflict.. by @rishabh625 in https://github.com/platform9/vjailbreak/pull/1054
* delete firstboot configmap when migration is deleted by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1071
* Sv/issue 920/enhancements log collector bundle by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1063
* added FQDN tooltip for better user guidance by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1069
* bugfix: Handle VMware login failures gracefully without requeuing by @rijojohn85 in https://github.com/platform9/vjailbreak/pull/1061
* Admin Cutover Periodic sync by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1056
* fix - Delay in password expiration after creating the vjailbreak vm upon first login by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1076
* Implement VM OS type validation in migration plan (release) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1044
* Cluster-Based VM Filtering in Migration Form by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/964
* fix(airgap): Pre-bake cert-manager images by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1087
* Show tenant name in openstack cluster name by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1085
* Handle inconsistent types in Host API response by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1099
* Separate Periodic Sync Interval Configuration for different migrations by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1083
* Add DeepWiki badge to README by @roopakparikh in https://github.com/platform9/vjailbreak/pull/1107
* Fix: Display RDM disk sizes correctly for disks smaller than 1 GB by @rijojohn85 in https://github.com/platform9/vjailbreak/pull/1090
* fix: issue-1073 Removing password log and replacing with "REDACTED" echo by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1064
* #1067 :: Remove unnecessary get migration calls on UI by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1103
* Added Pre-migration check to see if port is available before migration by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1115
* Fix: Prevent race condition in RDMDisk controller causing duplicate Cinder volume imports by @rijojohn85 in https://github.com/platform9/vjailbreak/pull/1086
* [UI] Need a Global settings page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1114
* Remove race condition in credential deletion flow by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1116
* Removed retry on failure checkbox by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1118
* Added powershell scripts for firstboot by @amar-chand in https://github.com/platform9/vjailbreak/pull/945
* mark migrationplan as successful if there are no VMs to migrate by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1123
* fix deleted creds used in migrationtemplate and migrationplan by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1127
* Resolve race condition and remove RDM sleep delay by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1125
* Added Retry Mechanism in Periodic Sync by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1080
* 1017 assigned ip for all vms removed if we select os of one of the vms post assigning ip by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1128
* Added a new option to enter Periodic Sync interval by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1126
* add proxy env set by user in controller as well by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1135
* do not wait for status after sumitting migrationform by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1132
* Fix - User should not be able to submit migration if OS is not selected during cold migration by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1136
* powering on of cold migration vms fix by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1131
* #1104 :: Bug :: Filter box for tenant search is going out of focus by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1138
* #989 :: Bug :: VM search box is going out of focus on start migration page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1141
* Implemented wait for RDM disks availability by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1142
* fix - Periodic sync values are not being populated in the migration ConfigMap, causing periodic sync to be skipped by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1148
* fix - Vm with multiple IPs on same MAC address (Tried with 2 IPs) are not getting 2nd IP on interface post migration by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1034
* Added an enhancement to revalidate the creds whenever required by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1113
* Added podfailed status check and reordered validation logic by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1151
* #1137 :: Bug :: OpenStack “Validate IP” does not fail gracefully when receiving a 500 (Internal Server Error) response by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1147
* #1144,#1145 :: periodic sync interval should not be a mandatory field on the migration form page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1152
* find the correct boot device without guestfish by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1133
* Pass user-assigned IPs through MigrationPlan for cold migration by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1153
* #864 :: Fixed multiple IP reset on OS selection by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1156
* #1154 :: Convert the global settings page to a tabular format by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1162
* Fetch resources post revalidation of credentials by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1161
* Fix: Use proxy from ENV for creating net/http clients by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/1159
* added edge cases for blocking plan to reconcile by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1163
* bugfix: Add empty check by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1166
* fix: #903 Using format() with timezone offset instead of ISOString() for a… by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1171
* Add envFrom configmap and have logs in validate IP endpoint by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1172
* #1129 :: Remove duplicate error text on credential creation failure by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1174
* Format UI directory with prettier by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1170
* Removed duplicate options in migration form by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1177
* #1175 :: Periodic sync validation requires clicking outside the input box before the Start button becomes enabled/disabled, which leads to start migration enabled even with wrong value sometimes by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1179
* In advanced option validation check only for granularoptions ignore rest by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1183
* Fix sdk while adding logs and other details by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/1178
* Added check to fallback to 5m if interval is less than 5m by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1187
* #1181 :: UI: Move to folder cannot use anyother name, when clearing the vjailbreakedVMs it appears again by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1186
* #1192 :: Bug: Migration Submit button is disabled when triggering admin cutover with periodic sync by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1197
* Inject log_collector.sh into the VM by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1194
* fix netplan upload for multi-disk VM by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1195
* Update revalidation status correctly by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1205
## New Contributors
* @rijojohn85 made their first contribution in https://github.com/platform9/vjailbreak/pull/1061
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.5...v0.3.6
+47
View File
@@ -0,0 +1,47 @@
# v0.3.7
- **Tag:** `v0.3.7`
- **Published:** 2025-12-19T12:08:24Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.7
## Release Notes
## What's Changed
* fix - Periodic Sync Migration Fails on Transient Network Errors Instead of Retrying by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1204
* Prebaked Openstack Cli inside the vjailbreak VM by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1211
* fix - Migration controller logs are being flooded by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1212
* #1202 :: Bug :: Single migrationtemplate object should be created for one migrationplan (Use Dynamic Hotplug-Enabled Flavors is the advance option making post calls) by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1215
* #1140 :: Enhancement :: Allow user input for IP's for any VM being migrated by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1217
* Added migration pod and controller logs in the UI by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1214
* #1040 :: Bug :: UI should block migration of VM having unknown OS (Should provide an option to select OS) by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1222
* Backend implementation for ability to add server group to the VMs by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1219
* Frontend for selecting server group during migration by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1220
* [Fix] added APIReader to get RDM by @rijojohn85 in https://github.com/platform9/vjailbreak/pull/1149
* cluster conversion fixes for static esx IPs by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1203
* fix - Password set in cloud init is not being reflected by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1226
* add more aggressive cleaning in v2v-helper by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1235
* support gpu flavours by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1233
* Show correct time elapsed during migration on ui by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1237
* Removed fstrim by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1143
* Reduced log verbosity for disk copy by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1249
* Disable 'Apply Changes' button when ip has invalid format by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1251
* fix - Can't assign dhcp IP to the migrated instance by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1234
* Fix migration timeout for multi-attach RDM volumes by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1247
* add setting to delete port after migration failure by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1255
* reflect current default migration method in migration form by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1257
* Fix batch script to properly write self-delete logic to the generated startup script by @Track2k in https://github.com/platform9/vjailbreak/pull/1213
* add UI option to automatically run script to fix fstab entries during migration by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1258
* feat: add a net pacakge with unit test cases by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/1160
* Added script to check disks status in Windows post-migration by @amar-chand in https://github.com/platform9/vjailbreak/pull/1167
* fix agents tenant and security groups by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1260
* fix multiple migration succeeded events in amplitude by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1262
* fix - Migration fails when port already exist on pcd side (DHCP=true) by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1279
* Setting up the default password for the agent nodes by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1281
* Fixed default migration-method to cold and map with global settings by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1284
* Updating CRDs for release by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1285
* Populate metadata in extra specs in openstack creds by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1286
## New Contributors
* @Track2k made their first contribution in https://github.com/platform9/vjailbreak/pull/1213
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.6...v0.3.7
+37
View File
@@ -0,0 +1,37 @@
# v0.3.8
- **Tag:** `v0.3.8`
- **Published:** 2026-01-07T08:27:41Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.3.8
## Release Notes
## What's Changed
* Implement Session Timeout (18 hours inactivity) for UI by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1264
* install vjbctl binary system wide by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1269
* Make datacenter field as an optional entry in vmware creds form by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1256
* #1227, #1224 :: Create a Common Component Library for Consistent UI Across the Application by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1297
* support additional machine states, optional set to PXE boot by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1301
* fix - Agent Node not prompting to change password by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1310
* fix errored agent nodes deletion from PCD by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1303
* Added script to preserve network interfaces by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1304
* #1299 :: New UI – Issues and Required Fixes by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1313
* Added advanced option in UI to select if the user wants to persist network interfaces by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1314
* add script to check and bring the offline volumes online by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1309
* Added a new state to show migrationplan validation failure in ui by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1298
* fix - logs for persistance script showing errors by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1317
* Add endpoint to take proxy variable, update the cm and restart controller. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1316
* Fix logs UI and updated CRDs by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1320
* #1294 :: UI add proxy by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1322
* #1294 :: UI: Add proxy with separate Http, Https field by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1325
* added validationFailed to stop time elapsed by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1328
* Refactored network persistance script by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1327
* #1331 :: Show warning message on UI after saving proxy by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1332
* no_proxy default values by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1335
* Fixed migrationplan status based on all edge cases (combination of validationFailed, failed, suceeded, inprogress) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1333
* Fix - Network persistence not working for older versions of ubuntu by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1338
* Vmware tools fix by @amar-chand in https://github.com/platform9/vjailbreak/pull/1267
* fix - Interfaces with no ip for ubuntu older versions getting default ip by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1340
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.7...v0.3.8
+60
View File
@@ -0,0 +1,60 @@
# v0.4.0
- **Tag:** `v0.4.0`
- **Published:** 2026-02-03T10:40:48Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.0
## Release Notes
## What's Changed
* Added link to public documentation in the ui by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1345
* #1336, #834 :: UI implement feedback changes by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1346
* Implement Storage SDK Foundation (#1091 #1093) - PART1 by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1291
* continues the array-accelerated migration work by implementing the storage array gRPC server layer by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1350
* Storage SDK Foundation - Part 3 -- removed all UI changes by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1353
* Upload VDDK via UI. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1319
* fix: Make VCENTER_DATACENTER optional in secret by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1356
* Reverting 3 commits that introduced breaking changes by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1357
* storage array integration by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1361
* Added migration details modal by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1355
* remove stale folders from the project by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1359
* Handled trailing slash in vCenter URL by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1349
* VDDK upload by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1364
* Added more relevant option in MigrationForm by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1347
* Bug: Check for empty arraycreds secret ref when normal migration and change names. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1369
* Restrict retry on rdm migration by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1365
* Added validation for hotplug flavor discovery by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1360
* merge two common folders for better code structure by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1379
* Added return to avoid segmentation fault or panic by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1387
* VM Migrations stats and alerts on grafana dashboards by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1362
* #1368, #1367 date time selection is not working for scheduled cutover and copy start time by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1384
* feat: adding vddk upload status api by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1377
* deterministic volume ordering during copy by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1389
* UI: Create UI for storage accelerated copy. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1378
* Added missing logs for better debugging by @geet-pf9 in https://github.com/platform9/vjailbreak/pull/1401
* feat: adding vddk version in the api by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1397
* #731 :: [UI] add prompts for missing VDDK, credentials by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1372
* Fix - windows 2022 not able to recognise the network interfaces by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1382
* pass vminfo by reference and improve sync error handling by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1391
* Reset currentState to initial in case of error and success by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1404
* Implemented OpenStack token-based authentication by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1394
* feat: adding fuzzy search by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1392
* Add VM power status check after poweroff by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1405
* Make request limit configurable and increase limit to 5Gib by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1407
* feat: Adding netapp storage.go by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1399
* Mark migrations ValidationFailed when RDM disk is not managed by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1406
* Disabled hour-time-picker for scheduled cutover if minutes are disabled by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1415
* Fix issues in vddk upload page by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1418
* fix: added buildBackendToVolumeTypeMap function and cleanup logic by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1422
* #1424 :: The screen flickers first time when clicking on other Global Settings tabs while the VDDK upload is in progress or uploaded by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1429
* #1434 :: Add ESXi SSH Private Key Input Field to Storage Array Credentials Page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1435
* Prioritizing Cold Migration in case of cutover options selected with cold migration by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1439
* #1444 :: Couldn't upload ssh key without an extension by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1447
* Throttling the go routines during copying changed block stage by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1446
* UI :: #1438 :: Admin cutover + cold migration is not a valid usecase by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1441
* #1430 :: Updating the vJailbreak settings through the UI removes ConfigMap keys that are not shown in the UI by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1436
## New Contributors
* @geet-pf9 made their first contribution in https://github.com/platform9/vjailbreak/pull/1401
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.3.8...v0.4.0