lib/kitchen/driver/cloudstack.rb in kitchen-cloudstack-0.21.0 vs lib/kitchen/driver/cloudstack.rb in kitchen-cloudstack-0.22.0
- old
+ new
@@ -19,10 +19,11 @@
require 'benchmark'
require 'kitchen'
require 'fog'
require 'socket'
require 'openssl'
+require 'base64'
module Kitchen
module Driver
# Cloudstack driver for Kitchen.
#
@@ -40,10 +41,11 @@
:cloudstack_api_key => config[:cloudstack_api_key],
:cloudstack_secret_access_key => config[:cloudstack_secret_key],
:cloudstack_host => cloudstack_uri.host,
:cloudstack_port => cloudstack_uri.port,
:cloudstack_path => cloudstack_uri.path,
+ :cloudstack_project_id => config[:cloudstack_project_id],
:cloudstack_scheme => cloudstack_uri.scheme
)
end
def create_server
@@ -55,10 +57,11 @@
options['networkids'] = config[:cloudstack_network_id]
options['securitygroupids'] = config[:cloudstack_security_group_id]
options['keypair'] = config[:cloudstack_ssh_keypair_name]
options['diskofferingid'] = config[:cloudstack_diskoffering_id]
options['name'] = config[:host_name]
+ options[:userdata] = convert_userdata(config[:cloudstack_userdata]) if config[:cloudstack_userdata]
options = sanitize(options)
options[:templateid] = config[:cloudstack_template_id]
options[:serviceofferingid] = config[:cloudstack_serviceoffering_id]
@@ -288,9 +291,17 @@
private
def sanitize(options)
options.reject { |k, v| v.nil? }
+ end
+
+ def convert_userdata(user_data)
+ if user_data.match /^(?:[A-Za-z0-9+\/]{4}\n?)*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/
+ user_data
+ else
+ Base64.encode64(user_data)
+ end
end
end
end
end