Add release v0.4.8

This commit is contained in:
OmkarDeshpande7
2026-09-15 22:50:24 +05:30
parent f42e7a3eeb
commit b4d65e549e
13 changed files with 1459 additions and 53 deletions
+560 -11
View File
@@ -878,6 +878,356 @@ spec:
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: migrationblueprints.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: MigrationBlueprint
listKind: MigrationBlueprintList
plural: migrationblueprints
singular: migrationblueprint
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.displayName
name: Display Name
type: string
- jsonPath: .spec.vmwareRef
name: Source
type: string
- jsonPath: .spec.pcdRef
name: Destination
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
MigrationBlueprint is the Schema for the migrationblueprints API. It stores a
reusable, named migration configuration that the UI presents as a "Migration
Template": users save a configuration once and apply it later to pre-populate
the migration form. Blueprints are not read by the migration controller.
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: |-
MigrationBlueprintSpec defines a reusable, named snapshot of a migration
configuration. It captures everything from the migration form except the VM
selection, so the UI can present it as a "Migration Template" and pre-fill
the migration wizard. Blueprints are consumed only by the UI: applying one
still creates the regular MigrationTemplate/MigrationPlan/mapping resources,
so the migration controller never reads a blueprint.
properties:
advancedOptions:
description: AdvancedOptions captures the advanced migration options
to pre-fill
properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks:
description: GranularNetworks is a list of networks to be migrated
items:
type: string
type: array
granularPorts:
description: GranularPorts is a list of ports to be migrated
items:
type: string
type: array
granularVolumeTypes:
description: GranularVolumeTypes is a list of volume types to
be migrated
items:
type: string
type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence:
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
removeVMwareTools:
default: true
description: |-
RemoveVMwareTools instructs the migration helper to remove VMware Tools post migration.
Defaults to true since most migrations require VMware Tools removal.
type: boolean
type: object
arrayCredsMappings:
description: |-
ArrayCredsMappings is an inline snapshot of datastore-to-ArrayCreds pairs.
Used when StorageCopyMethod is "StorageAcceleratedCopy".
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
customMetadata:
additionalProperties:
type: string
description: |-
CustomMetadata is a map of additional key-value pairs applied as instance
metadata to every migrated VM
type: object
dataOnly:
description: |-
DataOnly copies and converts disks to Cinder volumes without creating an
OpenStack VM
type: boolean
description:
description: Description is a free-text description of the blueprint
type: string
displayName:
description: DisplayName is the human-readable name of the blueprint
shown in the UI
minLength: 1
type: string
fallbackToDHCP:
description: FallbackToDHCP falls back to DHCP when static IP assignment
is not possible
type: boolean
firstBootScript:
description: FirstBootScript is the script to run on first boot of
migrated VMs
type: string
migrationStrategy:
description: |-
MigrationStrategy captures the migration type, cutover windows, and
health-check settings to pre-fill into the migration form.
Optional so partially filled forms can be saved as templates.
properties:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
dataOnly:
default: false
description: |-
DataOnly skips OpenStack VM creation; converted Cinder volumes are left staged.
Compatible with all strategy types (hot, cold, mock).
type: boolean
disconnectSourceNetwork:
default: false
type: boolean
healthCheckPort:
default: "443"
type: string
performHealthChecks:
default: false
type: boolean
type:
enum:
- hot
- cold
- mock
type: string
vmCutoverEnd:
format: date-time
type: string
vmCutoverStart:
format: date-time
type: string
required:
- type
type: object
networkMappings:
description: |-
NetworkMappings is an inline snapshot of source-to-target network pairs.
Copied by value rather than referencing a NetworkMapping resource, since
those are per-migration objects that may be mutated or deleted.
items:
description: Network represents a mapping between source and target
networks
properties:
source:
description: Source is the name of the source network in VMware
type: string
target:
description: Target is the name of the target network in OpenStack
type: string
required:
- source
- target
type: object
type: array
noVMwareClusterFilter:
description: |-
NoVMwareClusterFilter records that the user explicitly chose the
"No Cluster" source filter: VMs on standalone ESXi hosts that are not
part of any vCenter cluster in the datacenter referenced by VMwareRef.
This is distinct from VMwareClusterName simply not being set yet, so it
is tracked as its own field rather than inferred from an empty string.
type: boolean
osFamily:
description: OSFamily is the OS type of the virtual machines this
blueprint targets
enum:
- windowsGuest
- linuxGuest
type: string
pcdRef:
description: |-
PCDRef is the name of the OpenstackCreds to use as the destination PCD environment.
Optional so partially filled forms can be saved as templates.
type: string
postMigrationAction:
description: PostMigrationAction captures the post-migration actions
to pre-fill
properties:
folderName:
type: string
moveToFolder:
type: boolean
renameVm:
type: boolean
suffix:
type: string
type: object
preserveSourceTags:
description: |-
PreserveSourceTags copies each source VM's vSphere tags and custom
attributes to the migrated VM as instance metadata
type: boolean
proxyVMRef:
description: |-
ProxyVMRef references the ProxyVM to use for data copy.
Used when StorageCopyMethod is "HotAdd".
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
securityGroups:
description: SecurityGroups is the list of OpenStack security group
names to apply
items:
type: string
type: array
serverGroup:
description: ServerGroup is the OpenStack server group to place migrated
VMs into
type: string
storageCopyMethod:
default: normal
description: StorageCopyMethod indicates the method to use for storage
migration
enum:
- normal
- StorageAcceleratedCopy
- HotAdd
type: string
storageMappings:
description: |-
StorageMappings is an inline snapshot of source-to-target storage pairs.
Copied by value for the same reason as NetworkMappings.
items:
description: Storage represents a mapping between source and target
storage types
properties:
source:
description: Source is the name of the source storage type in
VMware
type: string
target:
description: Target is the name of the target storage type in
OpenStack
type: string
required:
- source
- target
type: object
type: array
targetPCDClusterName:
description: TargetPCDClusterName is the name of the PCD cluster to
migrate VMs into
type: string
useGPUFlavor:
description: UseGPUFlavor indicates if the migration should filter
and use GPU-enabled flavors
type: boolean
virtioWinDriver:
description: VirtioWinDriver is the virtio-win driver version to use
for Windows guests
type: string
vmwareClusterName:
description: |-
VMwareClusterName is the name of the source vCenter cluster VMs are
migrated from.
type: string
vmwareRef:
description: |-
VMwareRef is the name of the VMwareCreds to use as the source environment.
Optional so partially filled forms can be saved as templates.
type: string
required:
- displayName
type: object
type: object
served: true
storage: true
subresources: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
@@ -976,10 +1326,20 @@ spec:
migration plan should be synced
type: string
removeVMwareTools:
description: RemoveVMwareTools instructs the migration helper
to remove VMware Tools post migration
default: true
description: |-
RemoveVMwareTools instructs the migration helper to remove VMware Tools post migration.
Defaults to true since most migrations require VMware Tools removal.
type: boolean
type: object
customMetadata:
additionalProperties:
type: string
description: |-
CustomMetadata is a map of additional key-value pairs applied as instance
metadata to every migrated VM in the plan. Keys here override colliding
keys derived from preserved source tags.
type: object
fallbackToDHCP:
type: boolean
firstBootScript:
@@ -998,6 +1358,12 @@ spec:
dataCopyStart:
format: date-time
type: string
dataOnly:
default: false
description: |-
DataOnly skips OpenStack VM creation; converted Cinder volumes are left staged.
Compatible with all strategy types (hot, cold, mock).
type: boolean
disconnectSourceNetwork:
default: false
type: boolean
@@ -1069,6 +1435,12 @@ spec:
suffix:
type: string
type: object
preserveSourceTags:
default: false
description: |-
PreserveSourceTags copies each source VM's vSphere tags and custom attributes
to the migrated VM as instance metadata. Applies to all VMs in the plan.
type: boolean
securityGroups:
items:
type: string
@@ -1169,6 +1541,10 @@ spec:
spec:
description: Spec defines the desired state of Migration
properties:
dataOnly:
description: DataOnly indicates no OpenStack VM should be created
after disk conversion.
type: boolean
disconnectSourceNetwork:
description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
@@ -1202,6 +1578,12 @@ spec:
podRef:
description: PodRef is the name of the pod
type: string
preserveSourceTags:
default: false
description: |-
PreserveSourceTags indicates whether the source VM's vSphere tags and custom
attributes are copied to the migrated VM as instance metadata.
type: boolean
vmName:
description: VMName is the name of the VM getting migrated from VMWare
to Openstack
@@ -1297,6 +1679,7 @@ spec:
- IdentifyingBlockDevices
- HotAddTransferInProgress
- HotAddCleanup
- DataCopied
type: string
retryable:
description: |-
@@ -1304,6 +1687,12 @@ spec:
Set to false for VMs with RDM (Raw Device Mapping) disks that share storage,
as RDM disk migration state prevents automatic retry.
type: boolean
stagedVolumeIDs:
description: StagedVolumeIDs lists the Cinder volume IDs created during
a data-only migration.
items:
type: string
type: array
syncWarningMessage:
description: |-
SyncWarningMessage contains the warning message when periodic sync is in a warning state.
@@ -1440,10 +1829,6 @@ 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
useGPUFlavor:
description: UseGPUFlavor indicates if the migration should filter
and use GPU-enabled flavors.
@@ -2410,8 +2795,10 @@ spec:
migration plan should be synced
type: string
removeVMwareTools:
description: RemoveVMwareTools instructs the migration helper
to remove VMware Tools post migration
default: true
description: |-
RemoveVMwareTools instructs the migration helper to remove VMware Tools post migration.
Defaults to true since most migrations require VMware Tools removal.
type: boolean
type: object
bmConfigRef:
@@ -2509,6 +2896,14 @@ spec:
- vmSequence
type: object
type: array
customMetadata:
additionalProperties:
type: string
description: |-
CustomMetadata is a map of additional key-value pairs applied as instance
metadata to every migrated VM in the plan. Keys here override colliding
keys derived from preserved source tags.
type: object
firstBootScript:
default: echo "Add your startup script here!"
type: string
@@ -2525,6 +2920,12 @@ spec:
dataCopyStart:
format: date-time
type: string
dataOnly:
default: false
description: |-
DataOnly skips OpenStack VM creation; converted Cinder volumes are left staged.
Compatible with all strategy types (hot, cold, mock).
type: boolean
disconnectSourceNetwork:
default: false
type: boolean
@@ -2566,6 +2967,12 @@ spec:
suffix:
type: string
type: object
preserveSourceTags:
default: false
description: |-
PreserveSourceTags copies each source VM's vSphere tags and custom attributes
to the migrated VM as instance metadata. Applies to all VMs in the plan.
type: boolean
vmMigrationPlans:
description: VMMigrationPlans is the reference to the VM migration
plan
@@ -3251,6 +3658,12 @@ spec:
cpu:
description: CPU is the number of CPUs in the virtual machine
type: integer
customAttributes:
additionalProperties:
type: string
description: CustomAttributes maps vSphere custom attribute names
to their values for the VM
type: object
datastores:
description: Datastores is the list of datastores for the virtual
machine
@@ -3358,6 +3771,13 @@ spec:
items:
type: string
type: array
tags:
additionalProperties:
type: string
description: |-
Tags maps vSphere tag category names to a comma-separated list of the
tag names attached to the VM in that category (e.g. "env" -> "production")
type: object
vmState:
description: VMState is the state of the virtual machine
type: string
@@ -3915,6 +4335,44 @@ rules:
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationblueprint-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationblueprints
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationblueprint-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationblueprints
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
@@ -4741,7 +5199,7 @@ spec:
- configMapRef:
name: pf9-env
optional: true
image: quay.io/platform9/vjailbreak-controller:v0.4.7
image: quay.io/platform9/vjailbreak-controller:v0.4.8
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
@@ -4848,7 +5306,7 @@ spec:
- configMapRef:
name: pf9-env
optional: true
image: quay.io/platform9/vjailbreak-vpwned:v0.4.7
image: quay.io/platform9/vjailbreak-vpwned:v0.4.8
imagePullPolicy: IfNotPresent
name: vpwned
ports:
@@ -4977,7 +5435,7 @@ spec:
serviceAccountName: ui-manager-sa
containers:
- name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.7
image: quay.io/platform9/vjailbreak-ui:v0.4.8
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
@@ -5130,6 +5588,7 @@ rules:
- esxisshcreds
- clustermigrations
- esximigrations
- migrationblueprints
- migrationplans
- migrations
- migrationtemplates
@@ -5220,3 +5679,93 @@ subjects:
- kind: ServiceAccount
name: ui-manager-sa
namespace: migration-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: vjailbreak-ai-sa
namespace: migration-system
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vjailbreak-ai-data
namespace: migration-system
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vjailbreak-ai
namespace: migration-system
spec:
replicas: 1
selector:
matchLabels:
app: vjailbreak-ai
template:
metadata:
labels:
app: vjailbreak-ai
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
serviceAccountName: vjailbreak-ai-sa
containers:
- name: vjailbreak-ai
image: quay.io/platform9/vjailbreak-ai:v0.4.8
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: vjailbreak-ai-secret
key: api-key
optional: true
- name: CHROMA_PATH
value: /data/chroma
- name: CONTEXT_PATH
value: /data/context.md
- name: ALLOWED_ORIGINS
value: "http://vjailbreak-ui-service.migration-system.svc.cluster.local"
volumeMounts:
- name: ai-data
mountPath: /data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "1Gi"
cpu: "500m"
volumes:
- name: ai-data
persistentVolumeClaim:
claimName: vjailbreak-ai-data
---
apiVersion: v1
kind: Service
metadata:
name: vjailbreak-ai
namespace: migration-system
spec:
selector:
app: vjailbreak-ai
type: ClusterIP
ports:
- protocol: TCP
port: 8080
targetPort: 8080