Class: Pvectl::Models::OperationResult

Inherits:
Base
  • Object
show all
Defined in:
lib/pvectl/models/operation_result.rb

Overview

Represents the result of a lifecycle operation on a VM.

Combines VM, task status, and error information into a single object for consistent presentation of operation results.

Examples:

Successful sync operation

result = OperationResult.new(vm: vm, task: task, success: task.successful?)
result.successful? #=> true
result.message #=> "OK"

Async operation (pending)

result = OperationResult.new(vm: vm, task_upid: upid, success: :pending)
result.pending? #=> true
result.message #=> "Task: UPID:pve1:..."

Failed operation

result = OperationResult.new(vm: vm, success: false, error: "Permission denied")
result.failed? #=> true
result.message #=> "Permission denied"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ OperationResult

Creates a new OperationResult.

Parameters:

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

    Result attributes



47
48
49
50
51
52
53
54
55
# File 'lib/pvectl/models/operation_result.rb', line 47

def initialize(attrs = {})
  super(attrs)
  @resource = @attributes[:resource]
  @operation = @attributes[:operation]
  @task = @attributes[:task]
  @task_upid = @attributes[:task_upid]
  @success = @attributes[:success]
  @error = @attributes[:error]
end

Instance Attribute Details

#errorString? (readonly)

Returns Error message if operation failed.

Returns:

  • (String, nil)

    Error message if operation failed



42
43
44
# File 'lib/pvectl/models/operation_result.rb', line 42

def error
  @error
end

#operationSymbol (readonly)

Returns The operation performed (:start, :stop, etc.).

Returns:

  • (Symbol)

    The operation performed (:start, :stop, etc.)



30
31
32
# File 'lib/pvectl/models/operation_result.rb', line 30

def operation
  @operation
end

#resourceHash? (readonly)

Returns Generic resource info (for snapshot/backup operations).

Returns:

  • (Hash, nil)

    Generic resource info (for snapshot/backup operations)



27
28
29
# File 'lib/pvectl/models/operation_result.rb', line 27

def resource
  @resource
end

#successBoolean, Symbol (readonly)

Returns true, false, or :pending.

Returns:

  • (Boolean, Symbol)

    true, false, or :pending



39
40
41
# File 'lib/pvectl/models/operation_result.rb', line 39

def success
  @success
end

#taskModels::Task? (readonly)

Returns The task (for completed sync operations).

Returns:

  • (Models::Task, nil)

    The task (for completed sync operations)



33
34
35
# File 'lib/pvectl/models/operation_result.rb', line 33

def task
  @task
end

#task_upidString? (readonly)

Returns The task UPID (for async operations).

Returns:

  • (String, nil)

    The task UPID (for async operations)



36
37
38
# File 'lib/pvectl/models/operation_result.rb', line 36

def task_upid
  @task_upid
end

Instance Method Details

#failed?Boolean

Checks if the operation failed.

Returns:

  • (Boolean)

    true if success is false, :partial, or task failed



67
68
69
# File 'lib/pvectl/models/operation_result.rb', line 67

def failed?
  success == false || success == :partial || task&.failed?
end

#messageString

Returns the result message for display.

Priority: error > task.exitstatus > task_upid > status_text

Returns:

  • (String)

    Result message



101
102
103
104
105
106
107
# File 'lib/pvectl/models/operation_result.rb', line 101

def message
  return error if error
  return task.exitstatus if task
  return "Task: #{task_upid}" if task_upid

  status_text
end

#partial?Boolean

Checks if the operation partially succeeded (e.g. clone OK, config update failed).

Returns:

  • (Boolean)

    true if success is :partial



81
82
83
# File 'lib/pvectl/models/operation_result.rb', line 81

def partial?
  success == :partial
end

#pending?Boolean

Checks if the operation is still pending (async).

Returns:

  • (Boolean)

    true if success is :pending or task is pending



74
75
76
# File 'lib/pvectl/models/operation_result.rb', line 74

def pending?
  success == :pending || task&.pending?
end

#status_textString

Returns human-readable status.

Returns:

  • (String)

    “Pending”, “Success”, or “Failed”



88
89
90
91
92
93
94
# File 'lib/pvectl/models/operation_result.rb', line 88

def status_text
  return "Pending" if pending?
  return "Partial" if partial?
  return "Success" if successful?

  "Failed"
end

#successful?Boolean

Checks if the operation was successful.

Returns:

  • (Boolean)

    true if success is true or task succeeded



60
61
62
# File 'lib/pvectl/models/operation_result.rb', line 60

def successful?
  success == true || task&.successful?
end