ManageIQ/manageiq-providers-azure_stack

View on GitHub
app/models/manageiq/providers/azure_stack/cloud_manager/vm.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class ManageIQ::Providers::AzureStack::CloudManager::Vm < ManageIQ::Providers::CloudManager::Vm
  include ManageIQ::Providers::AzureStack::EmsRefMixin

  supports :capture

  POWER_STATES = {
    'PowerState/running'      => 'on',
    'PowerState/starting'     => 'powering_up',
    'PowerState/stopped'      => 'suspended',
    'PowerState/stopping'     => 'suspending',
    'PowerState/deallocated'  => 'off',
    'PowerState/deallocating' => 'powering_down',
    'PowerState/unknown'      => 'unknown'
  }.freeze

  def raw_start
    with_provider_connection(:service => :Compute) do |client|
      client.virtual_machines.start(resource_group_name(ems_ref), name)
    end
    update!(:raw_power_state => 'PowerState/running')
  end

  def raw_stop
    with_provider_connection(:service => :Compute) do |client|
      client.virtual_machines.deallocate(resource_group_name(ems_ref), name)
    end
    update!(:raw_power_state => 'PowerState/deallocated')
  end

  def raw_suspend
    with_provider_connection(:service => :Compute) do |client|
      client.virtual_machines.stop(resource_group_name(ems_ref), name)
    end
    update!(:raw_power_state => 'PowerState/stopped')
  end
  alias raw_pause raw_suspend

  def self.calculate_power_state(raw_power_state)
    # https://docs.microsoft.com/en-us/azure/virtual-machines/windows/states-lifecycle
    POWER_STATES[raw_power_state.to_s] || 'unknown'
  end
end