class Chef::Provider::AzureDataDisk
Public Instance Methods
attach_data_disk(vm)
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 160 def attach_data_disk(vm) if vm data_disk = data_disk_setup_for(vm) vm.storage_profile.data_disks.push(data_disk) action_handler.report_progress "Updating VM #{new_resource.vm} with data disk #{new_resource.name}..." result = compute_management_client.virtual_machines.create_or_update(new_resource.resource_group, new_resource.vm, vm) Chef::Log.debug("result: #{result.inspect}") else raise "VM not available." end end
create_disk()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 64 def create_disk action_handler.report_progress "Creating new data disk #{new_resource.name}..." disk_params = Azure::ARM::Compute::Models::Disk.new.tap do |disk| disk.account_type = new_resource.storage_account_type disk.disk_size_gb = new_resource.size disk.tags = new_resource.tags if new_resource.tags disk.location = new_resource.location disk.creation_data = Azure::ARM::Compute::Models::CreationData.new.tap do |creationData| creationData.create_option = 'empty' end end compute_management_client.disks.create_or_update(new_resource.resource_group, new_resource.name, disk_params) end
data_disk_attached_to?(vm)
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 114 def data_disk_attached_to?(vm) if data_disk_owner_id_silent if data_disk_owner_id == vm.id return true else raise "Disk #{new_resource.name} is attached to some other VM." end end false end
data_disk_exist?()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 84 def data_disk_exist? try_azure_operation('getting data disk', true) do compute_management_client.disks.get(new_resource.resource_group, new_resource.name) end end
data_disk_id()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 90 def data_disk_id try_azure_operation('getting data disk') do compute_management_client.disks.get(new_resource.resource_group, new_resource.name).id end end
data_disk_owner_id()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 102 def data_disk_owner_id try_azure_operation('getting data disk') do compute_management_client.disks.get(new_resource.resource_group, new_resource.name).managed_by end end
data_disk_owner_id_silent()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 108 def data_disk_owner_id_silent try_azure_operation('getting data disk', true) do compute_management_client.disks.get(new_resource.resource_group, new_resource.name).managed_by end end
data_disk_setup_for(vm)
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 125 def data_disk_setup_for(vm) data_disk = Azure::ARM::Compute::Models::DataDisk.new.tap do |dd_disk| dd_disk.name = new_resource.name dd_disk.disk_size_gb = new_resource.size if !data_disk_exist? || new_resource.size > data_disk_size Chef::Log.warn("Disk size reduction is not supported") if data_disk_exist? && new_resource.size < data_disk_size dd_disk.lun = disk_lun(vm) dd_disk.caching = new_resource.caching dd_disk.create_option = data_disk_exist? ? 'attach' : 'empty' managedDiskInfo = Azure::ARM::Compute::Models::ManagedDiskParameters.new.tap do |managedDisk| if data_disk_exist? action_handler.report_progress "Data disk with name #{new_resource.name} was found. Using this..." managedDisk.id = data_disk_id else managedDisk.storage_account_type = new_resource.storage_account_type end end dd_disk.managed_disk = managedDiskInfo end end
data_disk_size()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 96 def data_disk_size try_azure_operation('getting data disk') do compute_management_client.disks.get(new_resource.resource_group, new_resource.name).disk_size_gb end end
destroy_data_disk()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 172 def destroy_data_disk action_handler.report_progress "Deleting data disk #{new_resource.name}." compute_management_client.disks.delete(new_resource.resource_group, new_resource.name) end
detach_data_disk(vm)
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 145 def detach_data_disk(vm) if vm vm.storage_profile.data_disks.each do |ddisk| if ddisk.name == new_resource.name action_handler.report_progress "Removing data disk #{new_resource.name} from VM #{new_resource.vm}." (vm.storage_profile.data_disks).delete(ddisk) result = compute_management_client.virtual_machines.create_or_update(new_resource.resource_group, new_resource.vm, vm) Chef::Log.debug("result: #{result.inspect}") end end else raise "VM not available." end end
disk_lun(vm)
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 177 def disk_lun(vm) if new_resource.lun new_resource.lun elsif (vm.storage_profile.data_disks.last).nil? 2 else vm.storage_profile.data_disks.last.lun + 1 end end
get_vm_silent()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 78 def get_vm_silent try_azure_operation('getting vm', true) do compute_management_client.virtual_machines.get(new_resource.resource_group, new_resource.vm) if new_resource.vm end end
whyrun_supported?()
click to toggle source
# File lib/chef/provider/azure_data_disk.rb, line 8 def whyrun_supported? true end