Class: Pvectl::Services::ResourceMigration
- Inherits:
-
Object
- Object
- Pvectl::Services::ResourceMigration
- Defined in:
- lib/pvectl/services/resource_migration.rb
Overview
Orchestrates migration of VMs and containers between cluster nodes.
Single service for both resource types, parameterized by resource_type. Async mode (default): returns UPID immediately, no blocking. Sync mode (–wait): polls Task until completion or timeout.
Constant Summary collapse
- DEFAULT_TIMEOUT =
600
Instance Method Summary collapse
-
#execute(resource_type, resources, target:) ⇒ Array<Models::OperationResult>
Executes migration operation on resources.
-
#initialize(vm_repository:, container_repository:, task_repository:, options: {}) ⇒ ResourceMigration
constructor
Creates a new ResourceMigration service.
Constructor Details
#initialize(vm_repository:, container_repository:, task_repository:, options: {}) ⇒ ResourceMigration
Creates a new ResourceMigration service.
28 29 30 31 32 33 |
# File 'lib/pvectl/services/resource_migration.rb', line 28 def initialize(vm_repository:, container_repository:, task_repository:, options: {}) @vm_repository = vm_repository @container_repository = container_repository @task_repository = task_repository @options = end |
Instance Method Details
#execute(resource_type, resources, target:) ⇒ Array<Models::OperationResult>
Executes migration operation on resources.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/pvectl/services/resource_migration.rb', line 41 def execute(resource_type, resources, target:) @resource_type = resource_type migratable, skipped = partition_by_target(resources, target) report_skipped(skipped, target) return all_on_target_results(target) if migratable.empty? results = [] migratable.each do |resource| result = migrate_single(resource, target) results << result break if @options[:fail_fast] && result.failed? end results end |