Class: Pvectl::Services::ContainerLifecycle

Inherits:
Object
  • Object
show all
Defined in:
lib/pvectl/services/container_lifecycle.rb

Overview

Orchestrates container lifecycle operations.

Handles execution of start/stop/shutdown/restart operations with sync/async modes, error handling, and result collection.

Examples:

Basic usage

service = ContainerLifecycle.new(ct_repo, task_repo)
results = service.execute(:start, [ct1, ct2])
results.each { |r| puts "#{r.container.vmid}: #{r.status_text}" }

Constant Summary collapse

SYNC_OPERATIONS =
%i[start stop].freeze
ASYNC_OPERATIONS =
%i[shutdown restart].freeze
ALL_OPERATIONS =
(SYNC_OPERATIONS + ASYNC_OPERATIONS).freeze
DEFAULT_TIMEOUT =
60

Instance Method Summary collapse

Constructor Details

#initialize(container_repository, task_repository, options = {}) ⇒ ContainerLifecycle

Creates a new ContainerLifecycle service.

Parameters:

  • container_repository (Repositories::Container)

    Container repository

  • task_repository (Repositories::Task)

    Task repository

  • options (Hash) (defaults to: {})

    Options (timeout, async, wait, fail_fast)



27
28
29
30
31
# File 'lib/pvectl/services/container_lifecycle.rb', line 27

def initialize(container_repository, task_repository, options = {})
  @container_repository = container_repository
  @task_repository = task_repository
  @options = options
end

Instance Method Details

#execute(operation, containers) ⇒ Array<Models::ContainerOperationResult>

Executes a lifecycle operation on a list of containers.

Parameters:

  • operation (Symbol)

    Operation to execute

  • containers (Array<Models::Container>)

    Containers to operate on

Returns:



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/pvectl/services/container_lifecycle.rb', line 38

def execute(operation, containers)
  validate_operation!(operation)

  results = []
  containers.each do |container|
    result = execute_single(operation, container)
    results << result

    break if @options[:fail_fast] && result.failed?
  end
  results
end