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) ||