class Chef::Knife::ProfitbricksVolumeCreate
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/profitbricks_volume_create.rb, line 67 def run $stdout.sync = true validate_required_params(%i(datacenter_id name type size), Chef::Config[:knife]) if !Chef::Config[:knife][:image] && !Chef::Config[:knife][:imagealias] ui.error("Either '--image' or '--image-alias' parameter must be provided") exit(1) end if !Chef::Config[:knife][:sshkeys] && !Chef::Config[:knife][:imagepassword] ui.error("Either '--image-password' or '--ssh-keys' parameter must be provided") exit(1) end print "#{ui.color('Creating volume...', :magenta)}" params = { name: Chef::Config[:knife][:name], size: Chef::Config[:knife][:size], bus: Chef::Config[:knife][:bus] || 'VIRTIO', type: Chef::Config[:knife][:type], licenceType: Chef::Config[:knife][:licencetype], } if Chef::Config[:knife][:image] params[:image] = Chef::Config[:knife][:image] end if Chef::Config[:knife][:imagealias] params[:imageAlias] = Chef::Config[:knife][:imagealias] end if Chef::Config[:knife][:sshkeys] params[:sshKeys] = Chef::Config[:knife][:sshkeys] end if Chef::Config[:knife][:imagepassword] params[:imagePassword] = Chef::Config[:knife][:imagepassword] end if Chef::Config[:knife][:volume_availability_zone] params[:availabilityZone] = Chef::Config[:knife][:volume_availability_zone] end connection volume = ProfitBricks::Volume.create( Chef::Config[:knife][:datacenter_id], params.compact ) dot = ui.color('.', :magenta) volume.wait_for(300) { print dot; ready? } volume.reload puts "\n" puts "#{ui.color('ID', :cyan)}: #{volume.id}" puts "#{ui.color('Name', :cyan)}: #{volume.properties['name']}" puts "#{ui.color('Size', :cyan)}: #{volume.properties['size']}" puts "#{ui.color('Bus', :cyan)}: #{volume.properties['bus']}" puts "#{ui.color('Image', :cyan)}: #{volume.properties['image']}" puts "#{ui.color('Type', :cyan)}: #{volume.properties['type']}" puts "#{ui.color('Licence Type', :cyan)}: #{volume.properties['licenceType']}" puts "#{ui.color('Zone', :cyan)}: #{volume.properties['availabilityZone']}" puts 'done' end