Class: Fog::Compute::AzureRM::Real
- Inherits:
-
Object
- Object
- Fog::Compute::AzureRM::Real
- Defined in:
- lib/fog/azurerm/compute.rb,
lib/fog/azurerm/requests/compute/check_vm_status.rb,
lib/fog/azurerm/requests/compute/get_virtual_machine.rb,
lib/fog/azurerm/requests/compute/list_virtual_machines.rb,
lib/fog/azurerm/requests/compute/start_virtual_machine.rb,
lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb,
lib/fog/azurerm/requests/compute/create_virtual_machine.rb,
lib/fog/azurerm/requests/compute/delete_virtual_machine.rb,
lib/fog/azurerm/requests/compute/list_availability_sets.rb,
lib/fog/azurerm/requests/compute/create_availability_set.rb,
lib/fog/azurerm/requests/compute/delete_availability_set.rb,
lib/fog/azurerm/requests/compute/restart_virtual_machine.rb,
lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb,
lib/fog/azurerm/requests/compute/redeploy_virtual_machine.rb,
lib/fog/azurerm/requests/compute/power_off_virtual_machine.rb,
lib/fog/azurerm/requests/compute/deallocate_virtual_machine.rb,
lib/fog/azurerm/requests/compute/generalize_virtual_machine.rb,
lib/fog/azurerm/requests/compute/list_available_sizes_for_virtual_machine.rb
Overview
This class provides the actual implemention for service calls.
Instance Method Summary collapse
- #attach_data_disk_to_vm(resource_group, vm_name, disk_name, disk_size, storage_account_name) ⇒ Object
- #check_vm_status(resource_group, name) ⇒ Object
- #create_availability_set(resource_group, name, location) ⇒ Object
- #create_virtual_machine(resource_group, name, location, vm_size, storage_account_name, username, password, disable_password_authentication, ssh_key_path, ssh_key_data, network_interface_card_id, availability_set_id, publisher, offer, sku, version, platform, provision_vm_agent, enable_automatic_updates) ⇒ Object
- #deallocate_virtual_machine(resource_group, name) ⇒ Object
- #delete_availability_set(resource_group, name) ⇒ Object
- #delete_virtual_machine(resource_group, name) ⇒ Object
- #detach_data_disk_from_vm(resource_group, vm_name, disk_name) ⇒ Object
- #generalize_virtual_machine(resource_group, name) ⇒ Object
-
#get_avail_set_properties(location) ⇒ Object
create the properties object for creating availability sets.
- #get_status(virtual_machine) ⇒ Object
- #get_virtual_machine(resource_group, name) ⇒ Object
-
#initialize(options) ⇒ Real
constructor
A new instance of Real.
- #list_availability_sets(resource_group) ⇒ Object
- #list_available_sizes_for_virtual_machine(resource_group, name) ⇒ Object
- #list_virtual_machines(resource_group) ⇒ Object
- #power_off_virtual_machine(resource_group, name) ⇒ Object
- #redeploy_virtual_machine(resource_group, name) ⇒ Object
- #restart_virtual_machine(resource_group, name) ⇒ Object
- #start_virtual_machine(resource_group, name) ⇒ Object
Constructor Details
#initialize(options) ⇒ Real
Returns a new instance of Real.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fog/azurerm/compute.rb', line 49 def initialize() begin require 'azure_mgmt_compute' require 'azure_mgmt_storage' require 'azure/storage' rescue LoadError => e retry if require('rubygems') raise e. end credentials = Fog::Credentials::AzureRM.get_credentials([:tenant_id], [:client_id], [:client_secret]) @compute_mgmt_client = ::Azure::ARM::Compute::ComputeManagementClient.new(credentials) @compute_mgmt_client.subscription_id = [:subscription_id] @storage_mgmt_client = ::Azure::ARM::Storage::StorageManagementClient.new(credentials) @storage_mgmt_client.subscription_id = [:subscription_id] end |
Instance Method Details
#attach_data_disk_to_vm(resource_group, vm_name, disk_name, disk_size, storage_account_name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb', line 6 def attach_data_disk_to_vm(resource_group, vm_name, disk_name, disk_size, storage_account_name) Fog::Logger.debug "Attaching Data Disk #{disk_name} to Virtual Machine #{vm_name} in Resource Group #{resource_group}." vm = get_virtual_machine_instance(resource_group, vm_name, @compute_mgmt_client) lun = get_logical_unit_number(vm.properties.storage_profile.data_disks) access_key = get_storage_access_key(resource_group, storage_account_name, @storage_mgmt_client) data_disk = build_storage_profile(disk_name, disk_size, lun, storage_account_name, access_key) vm.properties.storage_profile.data_disks.push(data_disk) vm.resources = nil begin promise = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm) result = promise.value! Fog::Logger.debug "Data Disk #{disk_name} attached to Virtual Machine #{vm_name} successfully." Azure::ARM::Compute::Models::VirtualMachine.serialize_object(result.body) rescue MsRestAzure::AzureOperationError => e msg = "Error Attaching Data Disk #{disk_name} to Virtual Machine #{vm_name} in Resource Group #{resource_group}. #{e.body['error']['message']}" raise msg end end |
#check_vm_status(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/azurerm/requests/compute/check_vm_status.rb', line 6 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 |
#create_availability_set(resource_group, name, location) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fog/azurerm/requests/compute/create_availability_set.rb', line 6 def create_availability_set(resource_group, name, location) begin Fog::Logger.debug "Creating Availability Set '#{name}' in #{location} region." avail_set_props = get_avail_set_properties(location) promise = @compute_mgmt_client.availability_sets.create_or_update(resource_group, name, avail_set_props) result = promise.value! Fog::Logger.debug "Availability Set #{name} created successfully." Azure::ARM::Compute::Models::AvailabilitySet.serialize_object(result.body) rescue MsRestAzure::AzureOperationError => e msg = "Exception creating Availability Set #{name} in Resource Group: #{resource_group}. #{e.body['error']['message']}" raise msg end end |
#create_virtual_machine(resource_group, name, location, vm_size, storage_account_name, username, password, disable_password_authentication, ssh_key_path, ssh_key_data, network_interface_card_id, availability_set_id, publisher, offer, sku, version, platform, provision_vm_agent, enable_automatic_updates) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/azurerm/requests/compute/create_virtual_machine.rb', line 6 def create_virtual_machine(resource_group, name, location, vm_size, storage_account_name, username, password, disable_password_authentication, ssh_key_path, ssh_key_data, network_interface_card_id, availability_set_id, publisher, offer, sku, version, platform, provision_vm_agent, enable_automatic_updates) Fog::Logger.debug "Creating Virtual Machine #{name} in Resource Group #{resource_group}." params = Azure::ARM::Compute::Models::VirtualMachine.new vm_properties = Azure::ARM::Compute::Models::VirtualMachineProperties.new unless availability_set_id.nil? sub_resource = MsRestAzure::SubResource.new sub_resource.id = availability_set_id vm_properties.availability_set = sub_resource end vm_properties.hardware_profile = define_hardware_profile(vm_size) vm_properties.storage_profile = define_storage_profile(name, storage_account_name, publisher, offer, sku, version) vm_properties.os_profile = if platform.casecmp('windows') == 0 define_windows_os_profile(name, username, password, provision_vm_agent, enable_automatic_updates) else define_linux_os_profile(name, username, password, disable_password_authentication, ssh_key_path, ssh_key_data) end vm_properties.network_profile = define_network_profile(network_interface_card_id) params.properties = vm_properties params.location = location begin promise = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, name, params) result = promise.value! Fog::Logger.debug "Virtual Machine #{name} Created Successfully." Azure::ARM::Compute::Models::VirtualMachine.serialize_object(result.body) rescue MsRestAzure::AzureOperationError => e msg = "Error Creating Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#deallocate_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/deallocate_virtual_machine.rb', line 6 def deallocate_virtual_machine(resource_group, name) Fog::Logger.debug "Deallocating Virtual Machine #{name} in Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.deallocate(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} Deallocated Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error Deallocating Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#delete_availability_set(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/delete_availability_set.rb', line 6 def delete_availability_set(resource_group, name) begin Fog::Logger.debug "Deleting Availability Set: #{name}." promise = @compute_mgmt_client.availability_sets.delete(resource_group, name) promise.value! Fog::Logger.debug "Availability Set #{name} deleted successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Exception deleting Availability Set #{name} in Resourse Group #{resource_group}. #{e.body['error']['message']}" raise msg end end |
#delete_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/delete_virtual_machine.rb', line 6 def delete_virtual_machine(resource_group, name) Fog::Logger.debug "Deleting Virtual Machine #{name} from Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.delete(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} Deleted Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error Deleting Virtual Machine '#{name}' from Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#detach_data_disk_from_vm(resource_group, vm_name, disk_name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb', line 6 def detach_data_disk_from_vm(resource_group, vm_name, disk_name) Fog::Logger.debug "Detaching Data Disk #{disk_name} from Virtual Machine #{vm_name} in Resource Group #{resource_group}." vm = get_virtual_machine_instance(resource_group, vm_name, @compute_mgmt_client) vm.properties.storage_profile.data_disks.each_with_index do |disk, index| if disk.name == disk_name vm.properties.storage_profile.data_disks.delete_at(index) end end vm.resources = nil begin promise = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm) result = promise.value! Fog::Logger.debug "Data Disk #{disk_name} detached from Virtual Machine #{vm_name} successfully." Azure::ARM::Compute::Models::VirtualMachine.serialize_object(result.body) rescue MsRestAzure::AzureOperationError => e msg = "Error Detaching Data Disk #{disk_name} from Virtual Machine #{vm_name} in Resource Group #{resource_group}. #{e.body['error']['message']}" raise msg end end |
#generalize_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/generalize_virtual_machine.rb', line 6 def generalize_virtual_machine(resource_group, name) Fog::Logger.debug "Generalizing Virtual Machine #{name} in Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.generalize(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} Generalized Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error Generalizing Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#get_avail_set_properties(location) ⇒ Object
create the properties object for creating availability sets
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fog/azurerm/requests/compute/create_availability_set.rb', line 21 def get_avail_set_properties(location) avail_set_props = Azure::ARM::Compute::Models::AvailabilitySetProperties.new # At least two domain faults avail_set_props.platform_fault_domain_count = 2 avail_set_props.platform_update_domain_count = 2 # At this point we do not have virtual machines to include avail_set_props.virtual_machines = [] avail_set_props.statuses = [] avail_set = Azure::ARM::Compute::Models::AvailabilitySet.new avail_set.location = location avail_set.properties = avail_set_props avail_set end |
#get_status(virtual_machine) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/fog/azurerm/requests/compute/check_vm_status.rb', line 20 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 |
#get_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/fog/azurerm/requests/compute/get_virtual_machine.rb', line 6 def get_virtual_machine(resource_group, name) begin promise = @compute_mgmt_client.virtual_machines.get(resource_group, name) response = promise.value! Azure::ARM::Compute::Models::VirtualMachine.serialize_object(response.body) rescue MsRestAzure::AzureOperationError => e msg = "Exception getting Virtual Machine #{name} from Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#list_availability_sets(resource_group) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/fog/azurerm/requests/compute/list_availability_sets.rb', line 6 def list_availability_sets(resource_group) begin promise = @compute_mgmt_client.availability_sets.list(resource_group) response = promise.value! Azure::ARM::Compute::Models::AvailabilitySetListResult.serialize_object(response.body)['value'] rescue MsRestAzure::AzureOperationError => e msg = "Exception listing availability sets in Resource Group #{resource_group}. #{e.body['error']['message']}" raise msg end end |
#list_available_sizes_for_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/fog/azurerm/requests/compute/list_available_sizes_for_virtual_machine.rb', line 6 def list_available_sizes_for_virtual_machine(resource_group, name) begin response = @compute_mgmt_client.virtual_machines.list_available_sizes(resource_group, name) result = response.value! Azure::ARM::Compute::Models::VirtualMachineSizeListResult.serialize_object(result.body)['value'] rescue MsRestAzure::AzureOperationError => e msg = "Error listing Sizes for Virtual Machine #{name} in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#list_virtual_machines(resource_group) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/fog/azurerm/requests/compute/list_virtual_machines.rb', line 6 def list_virtual_machines(resource_group) begin response = @compute_mgmt_client.virtual_machines.list(resource_group) result = response.value! Azure::ARM::Compute::Models::VirtualMachineListResult.serialize_object(result.body)['value'] rescue MsRestAzure::AzureOperationError => e msg = "Error listing Virtual Machines in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#power_off_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/power_off_virtual_machine.rb', line 6 def power_off_virtual_machine(resource_group, name) Fog::Logger.debug "Powering off Virtual Machine #{name} in Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.power_off(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} Powered off Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error Powering off Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#redeploy_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/redeploy_virtual_machine.rb', line 6 def redeploy_virtual_machine(resource_group, name) Fog::Logger.debug "Redeploying Virtual Machine #{name} in Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.redeploy(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} Redeployed Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error Redeploying Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#restart_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/restart_virtual_machine.rb', line 6 def restart_virtual_machine(resource_group, name) Fog::Logger.debug "Restarting Virtual Machine #{name} in Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.restart(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} Restarted Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error Restarting Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |
#start_virtual_machine(resource_group, name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/fog/azurerm/requests/compute/start_virtual_machine.rb', line 6 def start_virtual_machine(resource_group, name) Fog::Logger.debug "Starting Virtual Machine #{name} in Resource Group #{resource_group}." begin promise = @compute_mgmt_client.virtual_machines.start(resource_group, name) promise.value! Fog::Logger.debug "Virtual Machine #{name} started Successfully." true rescue MsRestAzure::AzureOperationError => e msg = "Error starting Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}" raise msg end end |