kitchen-vsphere 0.1.0.alpha.2 → 0.2.0.dev

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: df4f18e157e77b6791c40d11da505a8ab10c2041
4
+ data.tar.gz: 6864359fe65db00d50cd829f705f6d4a3d8079ab
5
+ SHA512:
6
+ metadata.gz: c2c6abd45a9c27fb2baa49dea1952b43fb329841640465b9325d20f6e9aa4ccefc58549115a5593913e7b04ce6f17273bb5886ac25220c8159b75419fa0e0718
7
+ data.tar.gz: 5e0d7bc21597160b9530aadcbca3f3f3f9633df1079dfab119f961d6632186ad44fb3a505c5f374cd34def9db2c28809abeac7e3d6766497125c7656e3331344
@@ -1,3 +1,8 @@
1
- ## 0.1.0 / Unreleased
1
+ ## 0.1.0
2
2
 
3
- * Initial release
3
+ * Initial release
4
+
5
+ ## 0.2.0 /unreleased
6
+
7
+ * Wait for public IP address
8
+ * Retry for a good IP address
@@ -19,6 +19,7 @@ Gem::Specification.new do |gem|
19
19
  gem.require_paths = ["lib"]
20
20
 
21
21
  gem.add_dependency 'test-kitchen', '~> 1.0'
22
+ gem.add_dependency 'rbvmomi'
22
23
  gem.add_dependency 'fog'
23
24
 
24
25
  gem.add_development_dependency 'cane'
@@ -22,6 +22,7 @@ require 'kitchen'
22
22
  require 'etc'
23
23
  require 'ipaddr'
24
24
  require 'socket'
25
+ require 'timeout'
25
26
 
26
27
  module Kitchen
27
28
  module Driver
@@ -33,14 +34,27 @@ module Kitchen
33
34
  default_config :use_ipv6, false
34
35
  default_config :upload_public_ssh_key, true
35
36
 
37
+ def wait_for_sshd_updating_ip(state, server)
38
+ begin
39
+ state[:hostname] = server.public_ip_address
40
+ timeout(5) {
41
+ wait_for_sshd(state[:hostname], config[:username],
42
+ { :port => config[:port] })
43
+ info "SSH connected to #{state[:hostname]}:#{config[:port]}"
44
+ }
45
+ rescue Timeout::Error
46
+ server = compute.servers.get(state[:server_id])
47
+ retry if server
48
+ raise ActionFailed, 'Server deleted'
49
+ end
50
+ end
51
+
36
52
  def create(state)
37
53
  config[:server_name] ||= generate_name(instance.name)
38
54
  server = create_server(state)
39
- state[:hostname] = server.ipaddress
40
- wait_for_sshd(state[:hostname], config[:username],
41
- { :port => config[:port] }) ; info '(ssh ready)'
55
+ wait_for_sshd_updating_ip(state, server)
42
56
  if config[:upload_public_ssh_key]
43
- upload_public_ssh_key(state, config, server)
57
+ upload_public_ssh_key(state, config)
44
58
  end
45
59
  rescue ::Fog::Errors::Error, Excon::Errors::Error => ex
46
60
  raise ActionFailed, ex.message
@@ -81,8 +95,12 @@ module Kitchen
81
95
  clone_results = compute.vm_clone(server_configed)
82
96
  server = compute.servers.get(clone_results['new_vm']['id'])
83
97
  state[:server_id] = server.id
84
- info "VSphere instance <#{state[:server_id]}> created."
85
- server.wait_for { print '.'; tools_state != 'toolsNotRunning' }
98
+ state[:server_vmname] = server.name
99
+ info "VSphere instance <#{server.id}>, '#{server.name}' created."
100
+ server.wait_for {
101
+ print '.'
102
+ tools_state != 'toolsNotRunning' && public_ip_address
103
+ }
86
104
  puts "\n(server ready)"
87
105
  server
88
106
  end
@@ -108,7 +126,7 @@ module Kitchen
108
126
  pieces.join sep
109
127
  end
110
128
 
111
- def upload_public_ssh_key(state, config, server)
129
+ def upload_public_ssh_key(state, config)
112
130
  ssh = ::Fog::SSH.new(state[:hostname], config[:username],
113
131
  { :password => config[:password] })
114
132
  pub_key = open(config[:public_key_path]).read
@@ -21,6 +21,6 @@ module Kitchen
21
21
  module Driver
22
22
 
23
23
  # Version string for vsphere Test Kitchen driver
24
- VSPHERE_VERSION = '0.1.0.alpha.2'
24
+ VSPHERE_VERSION = '0.2.0.dev'
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,94 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.alpha.2
5
- prerelease: 6
4
+ version: 0.2.0.dev
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Wrock
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2014-12-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: test-kitchen
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rbvmomi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: fog
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - ">="
36
46
  - !ruby/object:Gem::Version
37
47
  version: '0'
38
48
  type: :runtime
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ! '>='
52
+ - - ">="
44
53
  - !ruby/object:Gem::Version
45
54
  version: '0'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: cane
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - ">="
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - ">="
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: tailor
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - ">="
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: countloc
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - ">="
84
88
  - !ruby/object:Gem::Version
85
89
  version: '0'
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
96
  version: '0'
94
97
  description: A Test Kitchen Driver for VMWare vShere
@@ -98,9 +101,9 @@ executables: []
98
101
  extensions: []
99
102
  extra_rdoc_files: []
100
103
  files:
101
- - .gitignore
102
- - .tailor
103
- - .travis.yml
104
+ - ".gitignore"
105
+ - ".tailor"
106
+ - ".travis.yml"
104
107
  - CHANGELOG.md
105
108
  - Gemfile
106
109
  - LICENSE
@@ -112,27 +115,26 @@ files:
112
115
  homepage: https://github.com/mwrock/kitchen-vsphere
113
116
  licenses:
114
117
  - Apache 2.0
118
+ metadata: {}
115
119
  post_install_message:
116
120
  rdoc_options: []
117
121
  require_paths:
118
122
  - lib
119
123
  required_ruby_version: !ruby/object:Gem::Requirement
120
- none: false
121
124
  requirements:
122
- - - ! '>='
125
+ - - ">="
123
126
  - !ruby/object:Gem::Version
124
127
  version: '0'
125
128
  required_rubygems_version: !ruby/object:Gem::Requirement
126
- none: false
127
129
  requirements:
128
- - - ! '>'
130
+ - - ">"
129
131
  - !ruby/object:Gem::Version
130
132
  version: 1.3.1
131
133
  requirements: []
132
134
  rubyforge_project:
133
- rubygems_version: 1.8.28
135
+ rubygems_version: 2.4.1
134
136
  signing_key:
135
- specification_version: 3
137
+ specification_version: 4
136
138
  summary: A Test Kitchen Driver for VMWare vShere
137
139
  test_files: []
138
140
  has_rdoc: