kitchen-vcenter 1.3.1 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -10
- data/README.md +13 -10
- data/lib/kitchen-vcenter/version.rb +1 -1
- data/lib/kitchen/driver/vcenter.rb +55 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e72f7421bcae71612b39ca42859c0ba3ad8ad8809f29e0e9720e5c8f4ebd668
|
4
|
+
data.tar.gz: '062093f1b32dfff9571cfd4aad8e3072de37fc3485f93ff0908f5d34e60ffa23'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dd6a013bb356d39b9c59d2eaea3c93f3bc6a9629958fbde48807ab40ea249ef518f05c98580f27d080c73f24da503b5952439fc03368bcae7536eb1772278ee
|
7
|
+
data.tar.gz: 15f635777a44a3e1d6e70af030589300ebb5a8d86e7b74d27d6141c2fdef433d6d32b8b5cf8c467e9ace37e5abde8620034d461ab725ca59378bf0e8e453c6fc
|
data/CHANGELOG.md
CHANGED
@@ -1,21 +1,29 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
<!-- latest_release 1.3.
|
4
|
-
## [v1.3.
|
3
|
+
<!-- latest_release 1.3.4 -->
|
4
|
+
## [v1.3.4](https://github.com/chef/kitchen-vcenter/tree/v1.3.4) (2019-01-04)
|
5
5
|
|
6
6
|
#### Merged Pull Requests
|
7
|
-
-
|
7
|
+
- Fix for Issues #26 and #30 [#44](https://github.com/chef/kitchen-vcenter/pull/44) ([tecracer-theinen](https://github.com/tecracer-theinen))
|
8
8
|
<!-- latest_release -->
|
9
|
-
<!-- release_rollup since=1.
|
10
|
-
### Changes
|
9
|
+
<!-- release_rollup since=1.3.1 -->
|
10
|
+
### Changes not yet released to rubygems.org
|
11
11
|
|
12
12
|
#### Merged Pull Requests
|
13
|
-
-
|
14
|
-
-
|
15
|
-
-
|
13
|
+
- Fix for Issues #26 and #30 [#44](https://github.com/chef/kitchen-vcenter/pull/44) ([tecracer-theinen](https://github.com/tecracer-theinen)) <!-- 1.3.4 -->
|
14
|
+
- Feature/check parameters [#40](https://github.com/chef/kitchen-vcenter/pull/40) ([tecracer-theinen](https://github.com/tecracer-theinen)) <!-- 1.3.3 -->
|
15
|
+
- README edits [#38](https://github.com/chef/kitchen-vcenter/pull/38) ([mjingle](https://github.com/mjingle)) <!-- 1.3.2 -->
|
16
16
|
<!-- release_rollup -->
|
17
17
|
<!-- latest_stable_release -->
|
18
|
-
## [
|
18
|
+
## [v1.3.1](https://github.com/chef/kitchen-vcenter/tree/v1.3.1) (2018-11-19)
|
19
|
+
|
20
|
+
#### Merged Pull Requests
|
21
|
+
- Fixed behaviour when not having any resource pools (Issue #28) [#31](https://github.com/chef/kitchen-vcenter/pull/31) ([tecracer-theinen](https://github.com/tecracer-theinen))
|
22
|
+
- Implement support for linked clones (feature #18) [#32](https://github.com/chef/kitchen-vcenter/pull/32) ([tecracer-theinen](https://github.com/tecracer-theinen))
|
23
|
+
- Chefstyle fixes [#37](https://github.com/chef/kitchen-vcenter/pull/37) ([tas50](https://github.com/tas50))
|
24
|
+
<!-- latest_stable_release -->
|
25
|
+
|
26
|
+
## [1.2.1](https://github.com/chef/kitchen-vcenter/tree/1.2.1) (2017-09-14)
|
19
27
|
[Full Changelog](https://github.com/chef/kitchen-vcenter/compare/v1.2.0...1.2.1)
|
20
28
|
|
21
29
|
**Closed issues:**
|
@@ -25,7 +33,6 @@
|
|
25
33
|
**Merged pull requests:**
|
26
34
|
|
27
35
|
- Update dependency reqs. Update README for dep install. [\#12](https://github.com/chef/kitchen-vcenter/pull/12) ([akulbe](https://github.com/akulbe))
|
28
|
-
<!-- latest_stable_release -->
|
29
36
|
|
30
37
|
## [v1.2.0](https://github.com/chef/kitchen-vcenter/tree/v1.2.0) (2017-09-12)
|
31
38
|
[Full Changelog](https://github.com/chef/kitchen-vcenter/compare/v1.1.0...v1.2.0)
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ Please refer to the [CHANGELOG](CHANGELOG.md) for version history and known issu
|
|
23
23
|
|
24
24
|
## Installation
|
25
25
|
|
26
|
-
This driver has a dependency. It requires the [vSphere Automation SDK](https://github.com/vmware/vsphere-automation-sdk-ruby) be installed. The steps to do that are as follows, for the time being it's not published to Rubygems
|
26
|
+
This driver has a dependency. It requires the [vSphere Automation SDK](https://github.com/vmware/vsphere-automation-sdk-ruby) be installed. The steps to do that are as follows, for the time being it's not published to Rubygems. If you are interested, please comment [here](https://github.com/vmware/vsphere-automation-sdk-ruby/issues/10).
|
27
27
|
|
28
28
|
- `$ git clone` [https://github.com/vmware/vsphere-automation-sdk-ruby.git](https://github.com/vmware/vsphere-automation-sdk-ruby.git)
|
29
29
|
- `cd vsphere-automation-sdk-ruby`
|
@@ -104,26 +104,31 @@ suites:
|
|
104
104
|
|
105
105
|
### Required parameters:
|
106
106
|
|
107
|
-
The following parameters should be set in the main `driver_config` section as they are common to all platforms
|
107
|
+
The following parameters should be set in the main `driver_config` section as they are common to all platforms:
|
108
108
|
|
109
109
|
- `vcenter_username` - Name to use when connecting to the vSphere environment
|
110
110
|
- `vcenter_password` - Password associated with the specified user
|
111
111
|
- `vcenter_host` - Host against which logins should be attempted
|
112
|
-
- `vcenter_disable_ssl_verify` - Whether or not to disable SSL verification checks. Good when using self signed certificates. Default: false
|
113
112
|
|
114
|
-
The following parameters should be set in the `driver_config` for the individual platform
|
113
|
+
The following parameters should be set in the `driver_config` for the individual platform:
|
115
114
|
|
116
|
-
- `template` - Template or virtual machine to use when cloning the new machine (needs to be a VM for linked clones)
|
117
115
|
- `datacenter` - Name of the datacenter to use to deploy into
|
116
|
+
- `template` - Template or virtual machine to use when cloning the new machine (needs to be a VM for linked clones)
|
118
117
|
|
119
118
|
### Optional Parameters
|
120
119
|
|
120
|
+
The following parameters should be set in the main `driver_config` section as they are common to all platforms:
|
121
|
+
- `vcenter_disable_ssl_verify` - Whether or not to disable SSL verification checks. Good when using self signed certificates. Default: false
|
122
|
+
|
121
123
|
The following optional parameters should be used in the `driver_config` for the platform.
|
122
124
|
|
123
125
|
- `targethost` - Host on which the new virtual machine should be created. If not specified then the first host in the cluster is used.
|
124
126
|
- `folder` - Folder into which the new machine should be stored. If specified the folder _must_ already exist.
|
125
|
-
- `
|
126
|
-
- `
|
127
|
+
- `poweron` - Power on the new virtual machine. Default: true
|
128
|
+
- `vm_name` - Specify name of virtual machine. Default: `<suite>-<platform>-<random-hexid>`
|
129
|
+
- `resource_pool` - Name of the resource pool to use when creating the machine. Will search first pool by default, can use value 'Resources' for none.
|
130
|
+
- `clone_type` - Type of clone, will default to "full" to create complete copies of template. Needs a VM as template parameter, if "linked" clone desired.
|
131
|
+
- `lookup_service_host` - Specify hostname of Lookup Service for setups with external PSC. Default: autodetect
|
127
132
|
|
128
133
|
## Contributing
|
129
134
|
|
@@ -133,9 +138,7 @@ For information on contributing to this project see <https://github.com/chef/che
|
|
133
138
|
|
134
139
|
* Report issues/questions/feature requests on [GitHub Issues][issues]
|
135
140
|
|
136
|
-
Pull requests are very welcome! Make sure your patches are well tested.
|
137
|
-
Ideally create a topic branch for every separate change you make. For
|
138
|
-
example:
|
141
|
+
Pull requests are very welcome! Make sure your patches are well tested. Ideally create a topic branch for every separate change you make. For example:
|
139
142
|
|
140
143
|
1. Fork the repo
|
141
144
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
@@ -28,6 +28,7 @@ require "com/vmware/vcenter"
|
|
28
28
|
require "com/vmware/vcenter/vm"
|
29
29
|
require "support/clone_vm"
|
30
30
|
require "securerandom"
|
31
|
+
require "uri"
|
31
32
|
|
32
33
|
# The main kitchen module
|
33
34
|
module Kitchen
|
@@ -37,23 +38,33 @@ module Kitchen
|
|
37
38
|
class Vcenter < Kitchen::Driver::Base
|
38
39
|
attr_accessor :connection_options, :ipaddress, :vapi_config, :session_svc, :session_id
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
default_config :vcenter_host
|
41
|
+
required_config :vcenter_username
|
42
|
+
required_config :vcenter_password
|
43
|
+
required_config :vcenter_host
|
44
|
+
required_config :datacenter
|
45
|
+
required_config :template
|
46
|
+
|
47
47
|
default_config :vcenter_disable_ssl_verify, false
|
48
|
+
default_config :targethost, nil
|
49
|
+
default_config :folder, nil
|
48
50
|
default_config :poweron, true
|
49
51
|
default_config :vm_name, nil
|
50
52
|
default_config :resource_pool, nil
|
51
53
|
default_config :clone_type, :full
|
54
|
+
default_config :lookup_service_host, nil
|
52
55
|
|
53
56
|
# The main create method
|
54
57
|
#
|
55
58
|
# @param [Object] state is the state of the vm
|
56
59
|
def create(state)
|
60
|
+
# Configure the hash for use when connecting for cloning a machine
|
61
|
+
@connection_options = {
|
62
|
+
user: config[:vcenter_username],
|
63
|
+
password: config[:vcenter_password],
|
64
|
+
insecure: config[:vcenter_disable_ssl_verify] ? true : false,
|
65
|
+
host: config[:vcenter_host],
|
66
|
+
}
|
67
|
+
|
57
68
|
# If the vm_name has not been set then set it now based on the suite, platform and a random number
|
58
69
|
if config[:vm_name].nil?
|
59
70
|
config[:vm_name] = format("%s-%s-%s", instance.suite.name, instance.platform.name, SecureRandom.hex(4))
|
@@ -215,13 +226,48 @@ module Kitchen
|
|
215
226
|
resource_pool[0].resource_pool
|
216
227
|
end
|
217
228
|
|
229
|
+
# Get location of lookup service
|
230
|
+
def lookup_service_host
|
231
|
+
# Allow manual overrides
|
232
|
+
return config[:lookup_service_host] unless config[:lookup_service_host].nil?
|
233
|
+
|
234
|
+
# Retrieve SSO service via RbVmomi, which is always co-located with the Lookup Service.
|
235
|
+
vim = RbVmomi::VIM.connect @connection_options
|
236
|
+
vim_settings = vim.serviceContent.setting.setting
|
237
|
+
sso_url = vim_settings.select { |o| o.key == "config.vpxd.sso.sts.uri" }&.first&.value
|
238
|
+
|
239
|
+
# Configuration fallback, if no SSO URL found for some reason
|
240
|
+
ls_host = sso_url.nil? ? config[:vcenter_host] : URI.parse(sso_url).host
|
241
|
+
debug("Using Lookup Service at: " + ls_host)
|
242
|
+
|
243
|
+
ls_host
|
244
|
+
end
|
245
|
+
|
246
|
+
# Get vCenter FQDN
|
247
|
+
def vcenter_host
|
248
|
+
# Retrieve SSO service via RbVmomi, which is always co-located with the Lookup Service.
|
249
|
+
vim = RbVmomi::VIM.connect @connection_options
|
250
|
+
vim_settings = vim.serviceContent.setting.setting
|
251
|
+
|
252
|
+
vim_settings.select { |o| o.key == "VirtualCenter.FQDN" }.first.value
|
253
|
+
end
|
254
|
+
|
218
255
|
# The main connect method
|
219
256
|
#
|
220
257
|
def connect
|
221
258
|
# Configure the connection to vCenter
|
222
|
-
lookup_service_helper = LookupServiceHelper.new(
|
259
|
+
lookup_service_helper = LookupServiceHelper.new(lookup_service_host)
|
223
260
|
vapi_urls = lookup_service_helper.find_vapi_urls
|
224
|
-
|
261
|
+
debug("Found vAPI endpoints: [" + vapi_urls.to_s + "]")
|
262
|
+
|
263
|
+
vim_urls = lookup_service_helper.find_vim_urls
|
264
|
+
debug("Found VIM endpoints: [" + vim_urls.to_s + "]")
|
265
|
+
|
266
|
+
node_id = vim_urls.select { |id, url| url.include? vcenter_host }.keys.first
|
267
|
+
debug("NodeID of vCenter " + config[:vcenter_host] + " is " + node_id.to_s)
|
268
|
+
|
269
|
+
vapi_url = lookup_service_helper.find_vapi_url(node_id)
|
270
|
+
debug("vAPI Endpoint for vCenter is " + vapi_url)
|
225
271
|
|
226
272
|
# Create the VAPI config object
|
227
273
|
ssl_options = {}
|
@@ -242,14 +288,6 @@ module Kitchen
|
|
242
288
|
vapi_config.set_security_context(
|
243
289
|
VAPI::Security.create_session_security_context(session_id)
|
244
290
|
)
|
245
|
-
|
246
|
-
# Configure the hash for use when connecting for cloning a machine
|
247
|
-
@connection_options = {
|
248
|
-
user: config[:vcenter_username],
|
249
|
-
password: config[:vcenter_password],
|
250
|
-
insecure: config[:vcenter_disable_ssl_verify] ? true : false,
|
251
|
-
host: config[:vcenter_host],
|
252
|
-
}
|
253
291
|
end
|
254
292
|
end
|
255
293
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-vcenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russell Seymour
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbvmomi
|