class Chef::Knife::ProfitbricksCompositeServerCreate
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/profitbricks_composite_server_create.rb, line 118 def run $stdout.sync = true validate_required_params(%i[datacenter_id name cores ram size type dhcp lan], 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 composite server...', :magenta).to_s volume_params = { name: Chef::Config[:knife][:volumename], size: Chef::Config[:knife][:size], bus: Chef::Config[:knife][:bus] || 'VIRTIO', image: Chef::Config[:knife][:image], type: Chef::Config[:knife][:type], licenceType: Chef::Config[:knife][:licencetype] } if Chef::Config[:knife][:image] volume_params['image'] = Chef::Config[:knife][:image] end if Chef::Config[:knife][:imagealias] volume_params['imageAlias'] = Chef::Config[:knife][:imagealias] end if Chef::Config[:knife][:sshkeys] volume_params[:sshKeys] = Chef::Config[:knife][:sshkeys] end if Chef::Config[:knife][:imagepassword] volume_params[:imagePassword] = Chef::Config[:knife][:imagepassword] end if config[:volume_availability_zone] volume_params[:availabilityZone] = Chef::Config[:knife][:volume_availability_zone] end nic_params = { name: Chef::Config[:knife][:nicname], ips: Chef::Config[:knife][:ips], dhcp: Chef::Config[:knife][:dhcp], lan: Chef::Config[:knife][:lan] } nic_params[:nat] = Chef::Config[:knife][:nat] if config[:nat] params = { name: Chef::Config[:knife][:name], cores: Chef::Config[:knife][:cores], cpuFamily: Chef::Config[:knife][:cpufamily], ram: Chef::Config[:knife][:ram], availabilityZone: Chef::Config[:knife][:availabilityzone], volumes: [volume_params], nics: [nic_params] } connection server = ProfitBricks::Server.create( Chef::Config[:knife][:datacenter_id], params.compact ) dot = ui.color('.', :magenta) server.wait_for(300) { print dot; ready? } puts "\n" puts "#{ui.color('ID', :cyan)}: #{server.id}" puts "#{ui.color('Name', :cyan)}: #{server.properties['name']}" puts "#{ui.color('Cores', :cyan)}: #{server.properties['cores']}" puts "#{ui.color('CPU Family', :cyan)}: #{server.properties['cpuFamily']}" puts "#{ui.color('Ram', :cyan)}: #{server.properties['ram']}" puts "#{ui.color('Availability Zone', :cyan)}: #{server.properties['availabilityZone']}" puts 'done' end