lib/chef/knife/openstack_server_create.rb in knife-openstack-1.1.0 vs lib/chef/knife/openstack_server_create.rb in knife-openstack-1.2.0.rc1

- old
+ new

@@ -45,15 +45,28 @@ :name => config[:chef_node_name], :image_ref => service.get_image(locate_config_value(:image)).id, :flavor_ref => service.get_flavor(locate_config_value(:flavor)).id, :security_groups => locate_config_value(:openstack_security_groups), :availability_zone => locate_config_value(:availability_zone), + "os:scheduler_hints" => locate_config_value(:openstack_scheduler_hints), :metadata => locate_config_value(:metadata), :key_name => locate_config_value(:openstack_ssh_key_id) }, :server_create_timeout => locate_config_value(:server_create_timeout) } + unless locate_config_value(:openstack_volumes).nil? + counter = 99 + @create_options[:server_def][:block_device_mapping] = locate_config_value(:openstack_volumes).map do |vol| + counter += 1 + { + :volume_id => vol, + :delete_on_termination => false, + :device_name => "/dev/vd"+counter.chr, + :volume_size => nil, + } + end + end @create_options[:server_def].merge!({:user_data => locate_config_value(:user_data)}) if locate_config_value(:user_data) @create_options[:server_def].merge!({:nics => locate_config_value(:network_ids).map { |nic| nic_id = { 'net_id' => nic }}}) if locate_config_value(:network_ids) Chef::Log.debug("Create server params - server_def = #{@create_options[:server_def]}") @@ -127,11 +140,13 @@ super # Use SSH password either specified from command line or from openstack server instance config[:ssh_password] = locate_config_value(:ssh_password) || server.password unless config[:openstack_ssh_key_id] - # private_network means bootstrap_network = 'private' - config[:bootstrap_network] = 'private' if config[:private_network] + # The bootstrap network is always initialised to 'public' when a network name isn't specified. Therefore, + # only set the bootstrap network to 'private' if still initialised to public and nothing was specified for + # the private network name. + config[:bootstrap_network] = 'private' if (config[:private_network] && config[:bootstrap_network] == 'public') # Which IP address to bootstrap unless config[:network] # --no-network bootstrap_ip_address = primary_public_ip_address(server.addresses) || primary_private_ip_address(server.addresses) ||