-
Notifications
You must be signed in to change notification settings - Fork 36
VirtualMachineService
The VirtualMachineService class is likely to be used extensively, and it contains additional methods not inherited from ResourceBaseServiceClass, so we cover it in some detail here.
# Get your VirtualMachineService instance
vms = Azure::Armrest::VirtualMachineService.new(conf)
The VirtualMachineService class supports the common methods available to all ResourceBaseGroupService subclasses.
rg = 'some_resource_group'
vm = vms.get('some_vm', rg)
vms.list(rg).each{ |vm| p vm.name }
vms.list_all.each{ |vm| p vm.name }
vms.delete('some_vm', rg)
Unlike other resource types, there are two possible "views" for a virtual machine - instance view and model view. The difference is in the type of object and information they return. By default, the get method retrieves the model view since it includes information about the model that was submitted to Azure, and is similar to the output used for the create method. The instance view largely returns status information for the VM.
You have the option to pass a 3rd parameter to the get method, or to use an explicit method.
# Examples:
vms.get('some_vm', rg) # => Gets model view
vms.get_model_view('some_vm', rg) # => Same as above
vms.get('some_vm', rg, false) # => Gets instance view
vms.get_instance_view('some_vm', rg) # => Same as above
The series method returns a list of VirtualMachineSize objects that contain information about available VM sizes that can be provisioned.
series = vms.series.first
p series.name
p series.number_of_cores
p series.os_disk_size_in_mb
The generalize method is used when preparing to save a VM as an image.
Note that you must still run the sysprep command on the VM in question. In practice, you are more likely to pass the -generalize switch to the sysprep command than use this method, but it's here if you need it.
The capture method saves an already generalized and sysprep'ed image to the storage account associated with the VM. You can pass :vhdPrefix, :destinationContainerName and :overwriteVhds as options.
Note that the :destinationContainerName will actually be nested under "system/Microsoft.Compute/Images".