Skip to content

Commit 3d98400

Browse files
init
Signed-off-by: Yaroslav Borbat <[email protected]>
1 parent bff5978 commit 3d98400

File tree

114 files changed

+2423
-709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+2423
-709
lines changed

api/core/v1alpha2/vdcondition/condition.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ const (
3636
StorageClassReadyType Type = "StorageClassReady"
3737
// InUseType indicates whether the VirtualDisk is attached to a running VirtualMachine or is being used in a process of an image creation.
3838
InUseType Type = "InUse"
39+
// MigrationType indicates whether the VirtualDisk is being volume migrating.
40+
MigrationType Type = "Migration"
3941
)
4042

4143
type (
@@ -51,6 +53,8 @@ type (
5153
StorageClassReadyReason string
5254
// InUseReason represents the various reasons for the InUse condition type.
5355
InUseReason string
56+
// MigrationReason represents the various reasons for the Migration condition type.
57+
MigrationReason string
5458
)
5559

5660
func (s DatasourceReadyReason) String() string {
@@ -77,6 +81,10 @@ func (s InUseReason) String() string {
7781
return string(s)
7882
}
7983

84+
func (s MigrationReason) String() string {
85+
return string(s)
86+
}
87+
8088
const (
8189
// DatasourceReady indicates that the datasource is ready for use, allowing the import process to start.
8290
DatasourceReady DatasourceReadyReason = "DatasourceReady"
@@ -168,3 +176,8 @@ const (
168176
// NotInUse indicates that VirtualDisk free for use.
169177
NotInUse InUseReason = "NotInUse"
170178
)
179+
180+
const (
181+
MigratingReason MigrationReason = "Migrating"
182+
PendingMigratingReason MigrationReason = "Pending"
183+
)

api/core/v1alpha2/virtual_disk.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ type VirtualDiskStatus struct {
7979
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
8080
// Name of the StorageClass used by the PersistentVolumeClaim if `Kubernetes` storage type is used.
8181
StorageClassName string `json:"storageClassName,omitempty"`
82+
83+
// Migration information.
84+
MigrationInfo VirtualDiskMigrationInfo `json:"migrationInfo,omitempty"`
8285
}
8386

8487
// VirtualDisk statistics.
@@ -198,7 +201,8 @@ type VirtualDiskList struct {
198201
// * `PVCLost`: The child PVC of the resource is missing. The resource cannot be used.
199202
// * `Exporting`: The child PV of the resource is in the process of exporting.
200203
// * `Terminating`: The resource is being deleted.
201-
// +kubebuilder:validation:Enum:={Pending,Provisioning,WaitForUserUpload,WaitForFirstConsumer,Ready,Resizing,Failed,PVCLost,Exporting,Terminating}
204+
// * `Migrating`: The resource is being migrating.
205+
// +kubebuilder:validation:Enum:={Pending,Provisioning,WaitForUserUpload,WaitForFirstConsumer,Ready,Resizing,Failed,PVCLost,Exporting,Terminating,Migrating}
202206
type DiskPhase string
203207

204208
const (
@@ -212,4 +216,25 @@ const (
212216
DiskLost DiskPhase = "PVCLost"
213217
DiskExporting DiskPhase = "Exporting"
214218
DiskTerminating DiskPhase = "Terminating"
219+
DiskMigrating DiskPhase = "Migrating"
220+
)
221+
222+
type VirtualDiskMigrationInfo struct {
223+
// Source PersistentVolumeClaim name.
224+
SourcePVC string `json:"sourcePVC,omitempty"`
225+
// Target PersistentVolumeClaim name.
226+
TargetPVC string `json:"targetPVC,omitempty"`
227+
Result VirtualDiskMigrationResult `json:"result,omitempty"`
228+
Message string `json:"message,omitempty"`
229+
StartTimestamp metav1.Time `json:"startTimestamp,omitempty"`
230+
EndTimestamp metav1.Time `json:"endTimestamp,omitempty"`
231+
}
232+
233+
// VirtualDiskMigrationResult is the result of the VirtualDisk migration.
234+
// +kubebuilder:validation:Enum=Succeeded;Failed
235+
type VirtualDiskMigrationResult string
236+
237+
const (
238+
VirtualDiskMigrationResultSucceeded VirtualDiskMigrationResult = "Succeeded"
239+
VirtualDiskMigrationResultFailed VirtualDiskMigrationResult = "Failed"
215240
)

api/core/v1alpha2/vmcondition/condition.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,21 +78,24 @@ const (
7878
ReasonConfigurationApplied Reason = "ConfigurationApplied"
7979
ReasonConfigurationNotApplied Reason = "ConfigurationNotApplied"
8080

81+
ReasonRestartAwaitingUnexpectedState Reason = "RestartAwaitingUnexpectedState"
8182
ReasonRestartAwaitingChangesExist Reason = "RestartAwaitingChangesExist"
8283
ReasonRestartAwaitingVMClassChangesExist Reason = "RestartAwaitingVMClassChangesExist"
8384
ReasonRestartNoNeed Reason = "NoNeedRestart"
8485

85-
ReasonMigratable Reason = "VirtualMachineMigratable"
86-
ReasonNotMigratable Reason = "VirtualMachineNotMigratable"
86+
ReasonMigratable Reason = "VirtualMachineMigratable"
87+
ReasonNonMigratable Reason = "VirtualMachineNonMigratable"
88+
ReasonDisksNotMigratable Reason = "VirtualMachineDisksNotMigratable"
8789

88-
ReasonVmIsMigrating Reason = "VirtualMachineMigrating"
89-
ReasonVmIsNotMigrating Reason = "VirtualMachineNotMigrating"
90+
ReasonMigratingPending Reason = "Pending"
91+
ReasonReadyToMigrate Reason = "ReadyToMigrate"
92+
ReasonMigratingInProgress Reason = "InProgress"
9093
ReasonLastMigrationFinishedWithError Reason = "LastMigrationFinishedWithError"
91-
ReasonVmIsNotRunning Reason = "VirtualMachineNotRunning"
92-
ReasonVmIsRunning Reason = "VirtualMachineRunning"
93-
ReasonInternalVirtualMachineError Reason = "InternalVirtualMachineError"
94-
ReasonPodNotStarted Reason = "PodNotStarted"
95-
ReasonMigrationIsPending Reason = "MigrationIsPending"
94+
95+
ReasonVmIsNotRunning Reason = "VirtualMachineNotRunning"
96+
ReasonVmIsRunning Reason = "VirtualMachineRunning"
97+
ReasonInternalVirtualMachineError Reason = "InternalVirtualMachineError"
98+
ReasonPodNotStarted Reason = "PodNotStarted"
9699

97100
// ReasonFilesystemFrozen indicates that virtual machine's filesystem has been successfully frozen.
98101
ReasonFilesystemFrozen Reason = "Frozen"

api/core/v1alpha2/vmopcondition/condition.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ const (
8080
// ReasonQuotaExceeded is a completed reason that indicates the project's quota has been exceeded and the migration has been paused.
8181
ReasonQuotaExceeded ReasonCompleted = "QuotaExceeded"
8282

83+
// ReasonWaitingForVirtualMachineToBeReadyToMigrate is a ReasonCompleted indicating that the virtual machine is not ready to be migrated.
84+
ReasonWaitingForVirtualMachineToBeReadyToMigrate ReasonCompleted = "WaitingForVirtualMachineToBeReadyToMigrate"
85+
8386
// ReasonOperationFailed is a ReasonCompleted indicating that operation has failed.
8487
ReasonOperationFailed ReasonCompleted = "OperationFailed"
8588

api/core/v1alpha2/zz_generated.deepcopy.go

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go

Lines changed: 98 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crds/virtualdisks.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,32 @@ spec:
366366
the cluster.
367367
type: string
368368
type: object
369+
migrationInfo:
370+
description: Migration information.
371+
properties:
372+
endTimestamp:
373+
format: date-time
374+
type: string
375+
message:
376+
type: string
377+
result:
378+
description:
379+
VirtualDiskMigrationResult is the result of the VirtualDisk
380+
migration.
381+
enum:
382+
- Succeeded
383+
- Failed
384+
type: string
385+
sourcePVC:
386+
description: Source PersistentVolumeClaim name.
387+
type: string
388+
startTimestamp:
389+
format: date-time
390+
type: string
391+
targetPVC:
392+
description: Target PersistentVolumeClaim name.
393+
type: string
394+
type: object
369395
observedGeneration:
370396
description: Resource generation last processed by the controller.
371397
format: int64
@@ -383,6 +409,7 @@ spec:
383409
* `PVCLost`: The child PVC of the resource is missing. The resource cannot be used.
384410
* `Exporting`: The child PV of the resource is in the process of exporting.
385411
* `Terminating`: The resource is being deleted.
412+
* `Migrating`: The resource is being migrating.
386413
enum:
387414
- Pending
388415
- Provisioning
@@ -394,6 +421,7 @@ spec:
394421
- PVCLost
395422
- Exporting
396423
- Terminating
424+
- Migrating
397425
type: string
398426
progress:
399427
description:

images/virtualization-artifact/cmd/virtualization-controller/main.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import (
5757
"github.com/deckhouse/virtualization-controller/pkg/controller/vmop"
5858
"github.com/deckhouse/virtualization-controller/pkg/controller/vmrestore"
5959
"github.com/deckhouse/virtualization-controller/pkg/controller/vmsnapshot"
60+
"github.com/deckhouse/virtualization-controller/pkg/controller/volumemigration"
6061
workloadupdater "github.com/deckhouse/virtualization-controller/pkg/controller/workload-updater"
6162
"github.com/deckhouse/virtualization-controller/pkg/featuregates"
6263
"github.com/deckhouse/virtualization-controller/pkg/logger"
@@ -389,12 +390,20 @@ func main() {
389390
os.Exit(1)
390391
}
391392

392-
if err = workloadupdater.SetupController(ctx, mgr, log, firmwareImage, controllerNamespace, virtControllerName); err != nil {
393+
workloadUpdaterLogger := logger.NewControllerLogger(workloadupdater.ControllerName, logLevel, logOutput, logDebugVerbosity, logDebugControllerList)
394+
if err = workloadupdater.SetupController(ctx, mgr, workloadUpdaterLogger, firmwareImage, controllerNamespace, virtControllerName); err != nil {
393395
log.Error(err.Error())
394396
os.Exit(1)
395397
}
396398

397-
if err = evacuation.SetupController(ctx, mgr, virtClient, log); err != nil {
399+
evacuationLogger := logger.NewControllerLogger(evacuation.ControllerName, logLevel, logOutput, logDebugVerbosity, logDebugControllerList)
400+
if err = evacuation.SetupController(ctx, mgr, virtClient, evacuationLogger); err != nil {
401+
log.Error(err.Error())
402+
os.Exit(1)
403+
}
404+
405+
volumeMigrationLogger := logger.NewControllerLogger(volumemigration.ControllerName, logLevel, logOutput, logDebugVerbosity, logDebugControllerList)
406+
if err = volumemigration.SetupController(ctx, mgr, volumeMigrationLogger); err != nil {
398407
log.Error(err.Error())
399408
os.Exit(1)
400409
}

0 commit comments

Comments
 (0)