kitchen-cloudstack 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +6 -2
- data/kitchen-cloudstack.gemspec +3 -1
- data/lib/kitchen/driver/cloudstack.rb +10 -4
- data/lib/kitchen/driver/cloudstack_version.rb +1 -1
- metadata +37 -5
data/README.md
CHANGED
@@ -23,6 +23,7 @@ Provide, at a minimum, the required driver options in your `.kitchen.yml` file:
|
|
23
23
|
require_chef_omnibus: latest (if you'll be using Chef)
|
24
24
|
OPTIONAL
|
25
25
|
cloudstack_sync_time: [NUMBER OF SECONDS TO WAIT FOR CLOUD-SET-GUEST-PASSWORD/SSHKEY]
|
26
|
+
keypair_search_directory: [PATH TO DIRECTORY (other than ~, ., and ~/.ssh) WITH KEYPAIR PEM FILE]
|
26
27
|
|
27
28
|
Then to specify different OS templates,
|
28
29
|
|
@@ -34,9 +35,12 @@ Then to specify different OS templates,
|
|
34
35
|
cloudstack_security_group_id: [SECURITY GROUP ID FOR SHARED NETWORKS]
|
35
36
|
OPTIONAL
|
36
37
|
cloudstack_ssh_keypair_name: [SSH KEY NAME]
|
38
|
+
cloudstack_sync_time: [NUMBER OF SECONDS TO WAIT FOR CLOUD-SET-GUEST-PASSWORD/SSHKEY]
|
37
39
|
To use the CloudStack public key provider, you need to have the .PEM file located in the same directory as
|
38
|
-
your .kitchen.yml file, your home directory (~),
|
39
|
-
Keypair on CloudStack
|
40
|
+
your .kitchen.yml file, your home directory (~), your .ssh directory (~/.ssh/), or specify a directory (without any
|
41
|
+
trailing slahses) as your "keypair_search_directory" and the file be named the same as the Keypair on CloudStack
|
42
|
+
suffixed with .pem (e.g. the Keypair named "TestKey" should be located in one of the searched directories and named
|
43
|
+
"TestKey.pem").
|
40
44
|
|
41
45
|
By default, a unique server name will be generated and the randomly generated password will be used, though that
|
42
46
|
behavior can be overridden with additional options (e.g., to specify a SSH private key):
|
data/kitchen-cloudstack.gemspec
CHANGED
@@ -18,7 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'test-kitchen', '~> 1.0.0.alpha.
|
21
|
+
spec.add_dependency 'test-kitchen', '~> 1.0.0.alpha.6'
|
22
|
+
spec.add_dependency 'fog', ">=1.10.1"
|
23
|
+
spec.add_dependency 'net-ssh-multi'
|
22
24
|
|
23
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
24
26
|
spec.add_development_dependency 'rake'
|
@@ -54,15 +54,18 @@ module Kitchen
|
|
54
54
|
options['templateid'] = config[:cloudstack_template_id]
|
55
55
|
options['displayname'] = config[:name]
|
56
56
|
options['serviceofferingid'] = config[:cloudstack_serviceoffering_id]
|
57
|
+
if (!config[:cloudstack_network_id].nil?)
|
58
|
+
options['networkids'] = config[:cloudstack_network_id]
|
59
|
+
end
|
60
|
+
|
57
61
|
if (!config[:cloudstack_security_group_id].nil?)
|
58
62
|
options['securitygroupids'] = config[:cloudstack_security_group_id]
|
59
63
|
end
|
60
|
-
|
61
|
-
options['networkids'] = config[:cloudstack_security_group_id]
|
62
|
-
end
|
64
|
+
|
63
65
|
if (!config[:cloudstack_ssh_keypair_name].nil?)
|
64
66
|
options['keypair'] = config[:cloudstack_ssh_keypair_name]
|
65
67
|
end
|
68
|
+
|
66
69
|
debug(options)
|
67
70
|
compute.deploy_virtual_machine(options)
|
68
71
|
end
|
@@ -107,7 +110,9 @@ module Kitchen
|
|
107
110
|
|
108
111
|
keypair = nil
|
109
112
|
password = nil
|
110
|
-
if File.exist?("
|
113
|
+
if ((!config[:keypair_search_directory].nil?) and (File.exist?("#{config[:keypair_search_directory]}/#{config[:cloudstack_ssh_keypair_name]}.pem")))
|
114
|
+
keypair = "#{config[:keypair_search_directory]}/#{config[:cloudstack_ssh_keypair_name]}.pem"
|
115
|
+
elsif File.exist?("./#{config[:cloudstack_ssh_keypair_name]}.pem")
|
111
116
|
keypair = "./#{config[:cloudstack_ssh_keypair_name]}.pem"
|
112
117
|
elsif File.exist?("~/#{config[:cloudstack_ssh_keypair_name]}.pem")
|
113
118
|
keypair = "~/#{config[:cloudstack_ssh_keypair_name]}.pem"
|
@@ -121,6 +126,7 @@ module Kitchen
|
|
121
126
|
state[:hostname] = server_info.fetch('nic').first.fetch('ipaddress')
|
122
127
|
|
123
128
|
if (!keypair.nil?)
|
129
|
+
debug("Using keypair: #{keypair}")
|
124
130
|
info("SSH for #{state[:hostname]} with keypair #{config[:cloudstack_ssh_keypair_name]}.")
|
125
131
|
ssh = Fog::SSH.new(state[:hostname], config[:username], {:keys => keypair})
|
126
132
|
debug(state[:hostname])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-cloudstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-kitchen
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.0.0.alpha.
|
21
|
+
version: 1.0.0.alpha.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,39 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.0.0.alpha.
|
29
|
+
version: 1.0.0.alpha.6
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: fog
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.10.1
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.10.1
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: net-ssh-multi
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
30
62
|
- !ruby/object:Gem::Dependency
|
31
63
|
name: bundler
|
32
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
195
|
version: '0'
|
164
196
|
requirements: []
|
165
197
|
rubyforge_project:
|
166
|
-
rubygems_version: 1.8.
|
198
|
+
rubygems_version: 1.8.24
|
167
199
|
signing_key:
|
168
200
|
specification_version: 3
|
169
201
|
summary: A Test Kitchen Driver for Cloudstack
|