Sha256: bb1156b2e88b12d469389d0a60148296347b8810b260beb4c4be93def5fdbe70

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

module Fog
  module Compute
    class AzureRM
      # This class provides the actual implemention for service calls.
      class Real
        def check_vm_status(resource_group, name)
          Fog::Logger.debug "Checking Virtual Machine #{name} status."
          begin
            # Pass 'instanceView' in get method, as argument, to get Virtual Machine status.
            promise = @compute_mgmt_client.virtual_machines.get(resource_group, name, 'instanceView')
            response = promise.value!
            virtual_machine = response.body
            get_status(virtual_machine)
          rescue  MsRestAzure::AzureOperationError => e
            msg = "Error in checking Virtual Machine '#{name}' status in Resource Group '#{resource_group}'. #{e.body['error']['message']}"
            raise msg
          end
        end

        def get_status(virtual_machine)
          vm_statuses = virtual_machine.properties.instance_view.statuses
          vm_status = nil
          vm_statuses.each do |status|
            if status.code.include? 'PowerState'
              Fog::Logger.debug status.display_status.to_s
              vm_status = status.code.split('/')[1]
            end
          end
          vm_status
        end
      end
      # This class provides the mock implementation for unit tests.
      class Mock
        def check_vm_status(_resource_group, _name)
          'running'
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fog-azure-rm-0.0.4 lib/fog/azurerm/requests/compute/check_vm_status.rb
fog-azure-rm-0.0.3 lib/fog/azurerm/requests/compute/check_vm_status.rb