fog/fog-azure-rm

View on GitHub
lib/fog/azurerm/requests/compute/get_managed_disk.rb

Summary

Maintainability
A
1 hr
Test Coverage
F
43%
module Fog
  module Compute
    class AzureRM
      # Real class for Compute Request
      class Real
        def get_managed_disk(resource_group_name, disk_name)
          msg = "Getting Managed Disk: #{disk_name}"
          Fog::Logger.debug msg
          begin
            managed_disk = @compute_mgmt_client.disks.get(resource_group_name, disk_name)
          rescue MsRestAzure::AzureOperationError => e
            raise_azure_exception(e, msg)
          end
          Fog::Logger.debug "Managed Disk #{disk_name} returned successfully."
          managed_disk
        end
      end

      # Mock class for Compute Request
      class Mock
        def get_managed_disk(*)
          disk = {
            'accountType' => 'Standard_LRS',
            'properties' => {
              'osType' => 'Windows',
              'creationData' => {
                'createOption' => 'Empty'
              },
              'diskSizeGB' => 10,
              'encryptionSettings' => {
                'enabled' => true,
                'diskEncryptionKey' => {
                  'sourceVault' => {
                    'id' => '/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myVMVault'
                  },
                  'secretUrl' => 'https://myvmvault.vault-int.azure-int.net/secrets/{secret}'
                },
                'keyEncryptionKey' => {
                  'sourceVault' => {
                    'id' => '/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myVMVault'
                  },
                  'keyUrl' => 'https://myvmvault.vault-int.azure-int.net/keys/{key}'
                }
              },
              'timeCreated' => '2016-12-28T02:46:21.3322041+00:00',
              'provisioningState' => 'Succeeded',
              'diskState' => 'Unattached'
            },
            'type' => 'Microsoft.Compute/disks',
            'location' => 'westus',
            'tags' => {
              'department' => 'Development',
              'project' => 'ManagedDisks'
            },
            'id' => '/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myManagedDisk1',
            'name' => 'myManagedDisk1'
          }
          disk_mapper = Azure::ARM::Compute::Models::Disk.mapper
          @compute_mgmt_client.deserialize(disk_mapper, disk, 'result.body')
        end
      end
    end
  end
end