dopv 0.13.0 → 0.14.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b629f251875fa5a722c8653bf7fc876ed61351d3
4
- data.tar.gz: 2f8482900d2ba04f2b9cd8fb95d40f6e272f60af
3
+ metadata.gz: de89890f34214801834e5644c84f063694a61712
4
+ data.tar.gz: 8e209a1912eb879b30315df186f70701e0d37b10
5
5
  SHA512:
6
- metadata.gz: d7732db19befd3c9598343dd1df16f8765336ebedd227692bbf8ca3c7c128d913afd481037c9efebc98ca259998323b9500e8d02ccbc404f19a4636253e193cf
7
- data.tar.gz: 7e6ac4f822ad2379a33786ad1b5ee8653437175a9646fdeb99439197df0ca11e759ea9c4a5adf9b85d110c1a4254a030de09e7a18588e7205ad86419d14cd736
6
+ metadata.gz: 4da48ba1627e09a223c3ea39aefe92dfc883cc498092b5187427dd7f30ee944d86f5c62089f4b0c5ac89f842a92d3e6f1909db53d309a4693d19f2c6967a8ddb
7
+ data.tar.gz: 555fc2c9b27cce49e59e22c6fe62ff5caacaf409664a1adf1a696cf3ba17bd91800f9ab596de23faf400dee9a047808e5fc88ce1841d2b934b887f4d0168d6cf
@@ -0,0 +1 @@
1
+ ruby-1.9.3-p551
@@ -1,4 +1,15 @@
1
+ # 0.14.0 28.05.2018
2
+
3
+ ## [deps]
4
+ * Update of `dop_common`
5
+
6
+ ## [vsphere]
7
+ * Adds new guest os types
8
+ * Adds ability to associate tags (see plan node property tags)
9
+ * Improve validations
10
+
1
11
  # 0.13.0 24.04.2017
12
+
2
13
  ## [deps]
3
14
  * Update `dop_common`
4
15
 
@@ -1,15 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dopv (0.13.0)
5
- dop_common (~> 0.14, >= 0.14.0)
4
+ dopv (0.14.0)
5
+ dop_common (~> 0.15, >= 0.15.2)
6
6
  fog (~> 1.36.0)
7
- fog-google (< 0.1.1)
8
- fog-profitbricks (~> 0.0.5)
9
7
  gli (~> 2.13.1)
10
8
  json (~> 1.8)
11
9
  logger-colors (~> 1)
12
- net-ssh (< 3.0)
13
10
  parallel (~> 1)
14
11
  rbovirt (~> 0.1, >= 0.1.3)
15
12
  rbvmomi (~> 1.8.2)
@@ -17,21 +14,20 @@ PATH
17
14
  GEM
18
15
  remote: https://rubygems.org/
19
16
  specs:
20
- CFPropertyList (2.3.5)
17
+ CFPropertyList (2.3.6)
21
18
  builder (3.2.3)
22
19
  byebug (9.0.6)
23
- coderay (1.1.1)
20
+ coderay (1.1.2)
24
21
  diff-lcs (1.3)
25
- docile (1.1.5)
26
- domain_name (0.5.20170404)
22
+ docile (1.3.1)
23
+ domain_name (0.5.20180417)
27
24
  unf (>= 0.0.5, < 1.0.0)
28
- dop_common (0.14.0)
25
+ dop_common (0.15.2)
29
26
  hashdiff (~> 0.3, >= 0.3.1)
30
- hiera (~> 3)
31
27
  lockfile (~> 2)
32
28
  rb-inotify (~> 0.9)
33
- excon (0.55.0)
34
- ffi (1.9.18)
29
+ excon (0.62.0)
30
+ ffi (1.9.23)
35
31
  fission (0.5.0)
36
32
  CFPropertyList (~> 2.2)
37
33
  fog (1.36.0)
@@ -60,7 +56,7 @@ GEM
60
56
  fog-xml (~> 0.1.1)
61
57
  ipaddress (~> 0.5)
62
58
  nokogiri (~> 1.5, >= 1.5.11)
63
- fog-aliyun (0.1.0)
59
+ fog-aliyun (0.2.2)
64
60
  fog-core (~> 1.27)
65
61
  fog-json (~> 1.0)
66
62
  ipaddress (~> 0.8)
@@ -68,18 +64,18 @@ GEM
68
64
  fog-atmos (0.1.0)
69
65
  fog-core
70
66
  fog-xml
71
- fog-aws (1.3.0)
67
+ fog-aws (2.0.1)
72
68
  fog-core (~> 1.38)
73
69
  fog-json (~> 1.0)
74
70
  fog-xml (~> 0.1)
75
71
  ipaddress (~> 0.8)
76
- fog-brightbox (0.11.0)
72
+ fog-brightbox (0.14.0)
77
73
  fog-core (~> 1.22)
78
74
  fog-json
79
75
  inflecto (~> 0.0.2)
80
- fog-core (1.43.0)
76
+ fog-core (1.45.0)
81
77
  builder
82
- excon (~> 0.49)
78
+ excon (~> 0.58)
83
79
  formatador (~> 0.2)
84
80
  fog-dynect (0.0.3)
85
81
  fog-core
@@ -95,16 +91,15 @@ GEM
95
91
  fog-json (1.0.2)
96
92
  fog-core (~> 1.0)
97
93
  multi_json (~> 1.10)
98
- fog-local (0.3.1)
99
- fog-core (~> 1.27)
94
+ fog-local (0.5.0)
95
+ fog-core (>= 1.27, < 3.0)
100
96
  fog-powerdns (0.1.1)
101
97
  fog-core (~> 1.27)
102
98
  fog-json (~> 1.0)
103
99
  fog-xml (~> 0.1)
104
- fog-profitbricks (0.0.5)
105
- fog-core
106
- fog-xml
107
- nokogiri
100
+ fog-profitbricks (4.1.1)
101
+ fog-core (~> 1.42)
102
+ fog-json (~> 1.0)
108
103
  fog-radosgw (0.0.5)
109
104
  fog-core (>= 1.21.0)
110
105
  fog-json
@@ -142,10 +137,10 @@ GEM
142
137
  nokogiri (>= 1.5.11, < 2.0.0)
143
138
  formatador (0.2.5)
144
139
  gli (2.13.4)
145
- guard (2.14.1)
140
+ guard (2.14.2)
146
141
  formatador (>= 0.2.4)
147
142
  listen (>= 2.7, < 4.0)
148
- lumberjack (~> 1.0)
143
+ lumberjack (>= 1.0.12, < 2.0)
149
144
  nenv (~> 0.1)
150
145
  notiffany (~> 0.0)
151
146
  pry (>= 0.9.12)
@@ -155,8 +150,7 @@ GEM
155
150
  guard-ctags-bundler (1.4.0)
156
151
  guard (>= 2.0)
157
152
  guard-compat (>= 0.1.0)
158
- hashdiff (0.3.2)
159
- hiera (3.3.1)
153
+ hashdiff (0.3.7)
160
154
  http-cookie (1.0.3)
161
155
  domain_name (~> 0.5)
162
156
  inflecto (0.0.2)
@@ -167,35 +161,33 @@ GEM
167
161
  rb-inotify (~> 0.9, >= 0.9.7)
168
162
  lockfile (2.1.3)
169
163
  logger-colors (1.0.0)
170
- lumberjack (1.0.11)
171
- method_source (0.8.2)
164
+ lumberjack (1.0.13)
165
+ method_source (0.9.0)
172
166
  mime-types (3.1)
173
167
  mime-types-data (~> 3.2015)
174
168
  mime-types-data (3.2016.0521)
175
169
  mini_portile2 (2.1.0)
176
170
  mixlib-shellout (2.2.7)
177
- multi_json (1.12.1)
171
+ multi_json (1.13.1)
178
172
  nenv (0.3.0)
179
- net-ssh (2.9.4)
180
173
  netrc (0.11.0)
181
- nokogiri (1.7.1)
174
+ nokogiri (1.6.8.1)
182
175
  mini_portile2 (~> 2.1.0)
183
176
  notiffany (0.1.1)
184
177
  nenv (~> 0.1)
185
178
  shellany (~> 0.0)
186
- parallel (1.11.1)
187
- pry (0.10.4)
179
+ parallel (1.12.1)
180
+ pry (0.11.3)
188
181
  coderay (~> 1.1.0)
189
- method_source (~> 0.8.1)
190
- slop (~> 3.4)
191
- pry-byebug (3.4.2)
192
- byebug (~> 9.0)
182
+ method_source (~> 0.9.0)
183
+ pry-byebug (3.4.3)
184
+ byebug (>= 9.0, < 9.1)
193
185
  pry (~> 0.10)
194
- rake (12.0.0)
195
- rb-fsevent (0.9.8)
196
- rb-inotify (0.9.8)
197
- ffi (>= 0.5.0)
198
- rbovirt (0.1.3)
186
+ rake (12.3.1)
187
+ rb-fsevent (0.10.3)
188
+ rb-inotify (0.9.10)
189
+ ffi (>= 0.5.0, < 2)
190
+ rbovirt (0.1.5)
199
191
  nokogiri
200
192
  rest-client (> 1.7.0)
201
193
  rbvmomi (1.8.2)
@@ -206,38 +198,37 @@ GEM
206
198
  http-cookie (>= 1.0.2, < 2.0)
207
199
  mime-types (>= 1.16, < 4.0)
208
200
  netrc (~> 0.8)
209
- rspec (3.5.0)
210
- rspec-core (~> 3.5.0)
211
- rspec-expectations (~> 3.5.0)
212
- rspec-mocks (~> 3.5.0)
213
- rspec-command (1.0.2)
201
+ rspec (3.7.0)
202
+ rspec-core (~> 3.7.0)
203
+ rspec-expectations (~> 3.7.0)
204
+ rspec-mocks (~> 3.7.0)
205
+ rspec-command (1.0.3)
214
206
  mixlib-shellout (~> 2.0)
215
207
  rspec (~> 3.2)
216
208
  rspec-its (~> 1.2)
217
- rspec-core (3.5.4)
218
- rspec-support (~> 3.5.0)
219
- rspec-expectations (3.5.0)
209
+ rspec-core (3.7.1)
210
+ rspec-support (~> 3.7.0)
211
+ rspec-expectations (3.7.0)
220
212
  diff-lcs (>= 1.2.0, < 2.0)
221
- rspec-support (~> 3.5.0)
213
+ rspec-support (~> 3.7.0)
222
214
  rspec-its (1.2.0)
223
215
  rspec-core (>= 3.0.0)
224
216
  rspec-expectations (>= 3.0.0)
225
- rspec-mocks (3.5.0)
217
+ rspec-mocks (3.7.0)
226
218
  diff-lcs (>= 1.2.0, < 2.0)
227
- rspec-support (~> 3.5.0)
228
- rspec-support (3.5.0)
219
+ rspec-support (~> 3.7.0)
220
+ rspec-support (3.7.1)
229
221
  shellany (0.0.1)
230
- simplecov (0.14.1)
231
- docile (~> 1.1.0)
222
+ simplecov (0.16.1)
223
+ docile (~> 1.1)
232
224
  json (>= 1.8, < 3)
233
225
  simplecov-html (~> 0.10.0)
234
- simplecov-html (0.10.0)
235
- slop (3.6.0)
236
- thor (0.19.4)
226
+ simplecov-html (0.10.2)
227
+ thor (0.20.0)
237
228
  trollop (2.1.2)
238
229
  unf (0.1.4)
239
230
  unf_ext
240
- unf_ext (0.0.7.4)
231
+ unf_ext (0.0.7.5)
241
232
  xml-simple (1.1.5)
242
233
 
243
234
  PLATFORMS
@@ -257,4 +248,4 @@ DEPENDENCIES
257
248
  simplecov
258
249
 
259
250
  BUNDLED WITH
260
- 1.14.3
251
+ 1.16.2
data/README.md CHANGED
@@ -56,26 +56,29 @@ SYNOPSIS
56
56
  dopv [global options] command [command options] [arguments...]
57
57
 
58
58
  VERSION
59
- 0.7.0
59
+ 0.14.0
60
60
 
61
61
  GLOBAL OPTIONS
62
- --help - Show this message
63
- --logfile, -l path_to_log_file - Log file (default: none)
64
- --[no-]trace, -t - Show stacktrace on crash
65
- --verbosity, -v level - Verbosity of the command line tool (default: info)
66
- --version - Display the program version
62
+ --help - Show this message
63
+ --log_dir=LOGDIR - Directory for the log files (default: $home/.dop/log)
64
+ --log_level, -l LOGLEVEL - Log level for the logfiles (default: DEBUG)
65
+ --plan_store_dir, -s DIR - Specify the directory where the plans and their state will be stored (default: $home/.dop/cache)
66
+ --[no-]trace, -t - Show stacktrace on crash
67
+ --verbosity, -v Verbosity - Verbosity of the command line tool (default: INFO)
68
+ --version - Display the program version
67
69
 
68
70
  COMMANDS
69
- add - Add a new plan file to the plan cache
70
- deploy - Deploy a plan
71
- export - Export the internal disk state into a local diskdb file
71
+ add - Add a new plan file to the plan store
72
+ deploy - Deploy a plan.
73
+ export - Export the internal data disks state into a local file
72
74
  help - Shows a list of commands or help for one command
73
- import - Import a diskdb file into the internal state store
74
- list - Show the list of plans in the plan store
75
- remove - Remove an existing plan from the plan cache
76
- undeploy - Undeploy a plan
75
+ import - Import data disks from a file into internal state store of the given plan
76
+ list - List plans stored in the plan store
77
+ refresh - Refresh a plan.
78
+ remove - Remove existing plan from the plan store
79
+ undeploy - Undeploy a plan.
77
80
  update - Update the plan and/or the plan state for a given plan yaml or plan name.
78
- validate - Validate plan file
81
+ validate - Validate a plan file.
79
82
  ```
80
83
 
81
84
  #### Validating a plan
@@ -4,49 +4,50 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'dopv/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "dopv"
7
+ spec.name = 'dopv'
8
8
  spec.version = Dopv::VERSION
9
- spec.authors = ["Pavol Dilung", "Andreas Zuber"]
10
- spec.email = ["pavol.dilung@swisscom.com", "azuber@puzzle.ch"]
9
+ spec.authors = ['Pavol Dilung', 'Andreas Zuber', 'Christian Schefuss']
10
+ spec.email = ['pavol.dilung@swisscom.com', 'azuber@puzzle.ch', 'christian.schefuss@swisscom.com']
11
11
  spec.description = %q{Deployment orchestrator for VMs}
12
12
  spec.summary = %q{Deployment orchestrator for VMs}
13
- spec.homepage = "https://github.com/swisscom/dopv"
14
- spec.license = "Apache-2.0"
13
+ spec.homepage = 'https://github.com/swisscom/dopv'
14
+ spec.license = 'Apache-2.0'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
+ spec.required_ruby_version = '>= 1.9.3'
20
21
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
24
- spec.add_development_dependency "rspec-mocks"
25
- spec.add_development_dependency "rspec-command"
26
- spec.add_development_dependency "simplecov"
27
- spec.add_development_dependency "pry"
28
- if RUBY_VERSION < "2"
29
- spec.add_development_dependency "pry-debugger"
22
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'pry'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec-command'
26
+ spec.add_development_dependency 'rspec-mocks'
27
+ spec.add_development_dependency 'rspec'
28
+ # Code quality
29
+ spec.add_development_dependency 'simplecov'
30
+
31
+ if RUBY_VERSION < '2'
32
+ spec.add_development_dependency 'pry-debugger'
30
33
  else
31
- spec.add_development_dependency "pry-byebug"
34
+ spec.add_development_dependency 'pry-byebug'
32
35
  end
33
- # Newer guard listen versions do not work properly with RB <= 2.2.2
34
- spec.add_development_dependency "listen", "~> 3.0.8"
35
- spec.add_development_dependency "guard-ctags-bundler"
36
36
 
37
- spec.add_dependency "json", "~> 1.8"
37
+ # Newer guard listen versions do not work properly with RB <= 2.2.2
38
+ spec.add_development_dependency 'listen', '~> 3.0.8'
39
+ spec.add_development_dependency 'guard-ctags-bundler'
40
+
41
+ spec.add_dependency 'dop_common', '~> 0.15', '>= 0.15.2'
42
+ spec.add_dependency 'fog', '~> 1.36.0'
43
+ spec.add_dependency 'gli', '~> 2.13.1'
44
+ spec.add_dependency 'json', '~> 1.8'
38
45
  spec.add_dependency 'logger-colors', '~> 1'
39
- #spec.add_dependency "rest-client", "~> 1.7"
40
- spec.add_dependency "rbovirt", "~> 0.1", '>= 0.1.3'
41
- spec.add_dependency "rbvmomi", "~> 1.8.2"
42
- spec.add_dependency "net-ssh", "< 3.0" # fog dependcy but net-ssh >= 3.x require ruby 2.x
43
- spec.add_dependency "fog-google", "< 0.1.1" # fog dependcy but net-ssh >= 3.x require ruby 2.x
44
- spec.add_dependency "fog-profitbricks", "~> 0.0.5" # fog dependency but fog-profitbricks > 0.5 requires ruby 2.x
45
- spec.add_dependency "fog", "~> 1.36.0"
46
- spec.add_dependency "gli", "~> 2.13.1"
47
- spec.add_dependency "dop_common", "~> 0.14", '>= 0.14.0'
46
+ spec.add_dependency 'rbovirt', '~> 0.1', '>= 0.1.3'
47
+ spec.add_dependency 'rbvmomi', '~> 1.8.2'
48
48
  spec.add_dependency 'parallel', '~> 1'
49
- if RUBY_VERSION < "2"
50
- spec.add_dependency "rest-client", "< 2.0"
49
+
50
+ if RUBY_VERSION < '2'
51
+ spec.add_dependency 'rest-client', '< 2.0'
51
52
  end
52
53
  end
@@ -58,6 +58,7 @@ module Dopv
58
58
  start_node_instance(node_instance)
59
59
  execute_hook(:post_create_vm, true)
60
60
  record_node_instance(node_instance)
61
+ refresh_node_instance(node_instance)
61
62
  else
62
63
  ::Dopv::log.warn("Node #{nodename}: Already exists.")
63
64
  # TODO: Ask Marcel what would be a purpose/use case of this
@@ -89,6 +90,7 @@ module Dopv
89
90
  node_instance = get_node_instance
90
91
  if node_instance
91
92
  record_node_instance(node_instance)
93
+ refresh_node_instance(node_instance)
92
94
  else
93
95
  erase_node_instance(node_instance)
94
96
  end
@@ -416,6 +418,9 @@ module Dopv
416
418
  def get_node_ip_addresses(node_instance)
417
419
  []
418
420
  end
421
+
422
+ def refresh_node_instance(node_instance)
423
+ end
419
424
  end
420
425
  end
421
426
  end
@@ -9,7 +9,7 @@ module Dopv
9
9
  class Vsphere < Base
10
10
  extend Forwardable
11
11
 
12
- def_delegators :@plan, :product_id, :organization_name, :workgroup, :thin_clone
12
+ def_delegators :@plan, :product_id, :organization_name, :workgroup, :thin_clone, :tags
13
13
 
14
14
  def initialize(node_config, data_disks_db, wait_params={})
15
15
  super(node_config, data_disks_db)
@@ -136,6 +136,9 @@ module Dopv
136
136
 
137
137
  when :windows
138
138
 
139
+ raise ProviderError, "credentials 'Administrator' is missing in plan" unless administrator_password
140
+ raise ProviderError, "'organization_name' is missing in plan" unless organization_name
141
+
139
142
  password_settings = (RbVmomi::VIM::CustomizationPassword.new(
140
143
  :plainText => true,
141
144
  :value => administrator_password
@@ -314,8 +317,16 @@ module Dopv
314
317
  def guest_id_to_os_family(node_instance)
315
318
  # Based on http://pubs.vmware.com/vsphere-50/index.jsp?topic=/com.vmware.wssdk.apiref.doc_50/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
316
319
  lookup_table = {
320
+ :asianux8_64Guest => :linux,
321
+ :centos8_64Guest => :linux,
322
+ :darwin17_64Guest => :linux,
323
+ :darwin18_64Guest => :linux,
317
324
  :debian6_64Guest => :linux,
318
325
  :debian6_Guest => :linux,
326
+ :freebsd11Guest => :linux,
327
+ :freebsd11_64Guest => :linux,
328
+ :freebsd12Guest => :linux,
329
+ :freebsd12_64Guest => :linux,
319
330
  :rhel4_64Guest => :linux,
320
331
  :rhel4Guest => :linux,
321
332
  :rhel5_64Guest => :linux,
@@ -324,8 +335,17 @@ module Dopv
324
335
  :rhel6Guest => :linux,
325
336
  :rhel7_64Guest => :linux,
326
337
  :rhel7Guest => :linux,
327
- :oracleLinux64Guest => :linux,
338
+ :rhel8_64Guest => :linux,
339
+ :sles11_64Guest => :linux,
340
+ :sles12_64Guest => :linux,
341
+ :sles13_64Guest => :linux,
342
+ :sles14_64Guest => :linux,
343
+ :sles15_64Guest => :linux,
328
344
  :oracleLinuxGuest => :linux,
345
+ :oracleLinux64Guest => :linux,
346
+ :oracleLinux8_64Guest => :linux,
347
+ :other4xLinux64Guest => :linux,
348
+ :other4xLinuxGuest => :linux,
329
349
  :ubuntu64Guest => :linux,
330
350
  :ubuntuGuest => :linux,
331
351
  :windows7_64Guest => :windows,
@@ -333,7 +353,17 @@ module Dopv
333
353
  :windows7Server64Guest => :windows,
334
354
  :windows8_64Guest => :windows,
335
355
  :windows8Guest => :windows,
336
- :windows8Server64Guest => :windows
356
+ :windows8Server64Guest => :windows,
357
+ :windows9_64Guest => :windows,
358
+ :windows9Guest => :windows,
359
+ :windows9Server64Guest => :windows,
360
+ :windows10_64Guest => :windows,
361
+ :windows10Guest => :windows,
362
+ :windows10Server64Guest => :windows,
363
+ :'windows7srv-64' => :windows,
364
+ :'windows8srv-64' => :windows,
365
+ :'windows9srv-64' => :windows,
366
+ :'windows10srv-64' => :windows
337
367
  }
338
368
 
339
369
  node_instance.guest_id ?
@@ -404,6 +434,55 @@ module Dopv
404
434
  [node_instance.public_ip_address].compact.select{|i| i.match(Resolv::IPv4::Regex) && !(i.start_with?('169.254.') && is_windows)}
405
435
  end
406
436
  end
437
+
438
+ def refresh_node_instance(node_instance)
439
+ return unless tags
440
+
441
+ begin
442
+ require 'json'
443
+ require 'rest-client'
444
+
445
+ ::Dopv::log.debug("Node #{nodename}: Trying to associate tags: #{tags} (requires minimum VMware vSphere 6.0).")
446
+
447
+ parse_json_response_block = Proc.new do |response, request, result|
448
+ JSON.parse(response).fetch('value')
449
+ end
450
+
451
+ base_uri = "https://#{provider_host}:#{provider_port}/rest/com/vmware/cis"
452
+ session_header = {'vmware-use-header-authn' => ('0'..'z').to_a.shuffle.first(32).join, 'Content-Type' => 'application/json', 'Accept' => 'application/json'}
453
+
454
+ session_token = RestClient::Request.execute method: :post, url: "#{base_uri}/session", user: provider_username, password: provider_password, headers: session_header, verify_ssl: false, &parse_json_response_block
455
+ session_header.merge!({'vmware-api-session-id' => session_token})
456
+ session_header.merge!({:cookies => {'vmware-api-session-id' => session_header.fetch('vmware-api-session-id')}})
457
+
458
+ # search tags
459
+ found_tags = []
460
+ all_tags = RestClient::Request.execute method: :get, url: "#{base_uri}/tagging/tag", headers: session_header, verify_ssl: false, &parse_json_response_block
461
+
462
+ all_tags.each do |tag_id|
463
+ tag = RestClient::Request.execute method: :get, url: "#{base_uri}/tagging/tag/id:#{tag_id}", headers: session_header, verify_ssl: false, &parse_json_response_block
464
+ if tags.include?(tag.fetch('name'))
465
+ ::Dopv::log.debug("Node #{nodename}: Tag '#{tag.fetch('name')}' found.")
466
+ found_tags << tag
467
+ end
468
+ end
469
+
470
+ # ensure all tags found
471
+ tags.each do |tag_name|
472
+ result = found_tags.select { |tag| tag.fetch('name') == tag_name }
473
+ ::Dopv::log.warn("Node #{nodename}: Tag '#{tag_name}' not found! (Tag created in vSphere? User '#{provider_username}' not authorized?)") unless result
474
+ end
475
+
476
+ found_tags.each do |tag|
477
+ payload = {'object_id' => {'type' => 'VirtualMachine', 'id' => node_instance.mo_ref}}.to_json
478
+ ::Dopv::log.debug("Node #{nodename}: Associate tag '#{tag.fetch('name')}' to '#{node_instance.mo_ref}'.")
479
+ _assign = RestClient::Request.execute method: :post, url: "#{base_uri}/tagging/tag-association/id:#{tag.fetch('id')}?~action=attach", headers: session_header, verify_ssl: false, payload: payload
480
+ end
481
+
482
+ rescue Exception => e
483
+ ::Dopv::log.debug("Node #{nodename}: Unable to assign tags, Error: #{e.message}.")
484
+ end
485
+ end
407
486
  end
408
487
  end
409
488
  end
@@ -1,3 +1,3 @@
1
1
  module Dopv
2
- VERSION = '0.13.0'
2
+ VERSION = '0.14.0'
3
3
  end
metadata CHANGED
@@ -1,333 +1,294 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dopv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavol Dilung
8
8
  - Andreas Zuber
9
+ - Christian Schefuss
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2017-04-24 00:00:00.000000000 Z
13
+ date: 2018-05-28 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
- - - "~>"
19
+ - - ~>
19
20
  - !ruby/object:Gem::Version
20
21
  version: '1.3'
21
22
  type: :development
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
- - - "~>"
26
+ - - ~>
26
27
  - !ruby/object:Gem::Version
27
28
  version: '1.3'
28
29
  - !ruby/object:Gem::Dependency
29
- name: rake
30
+ name: pry
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - ">="
33
+ - - '>='
33
34
  - !ruby/object:Gem::Version
34
35
  version: '0'
35
36
  type: :development
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
- - - ">="
40
+ - - '>='
40
41
  - !ruby/object:Gem::Version
41
42
  version: '0'
42
43
  - !ruby/object:Gem::Dependency
43
- name: rspec
44
+ name: rake
44
45
  requirement: !ruby/object:Gem::Requirement
45
46
  requirements:
46
- - - ">="
47
+ - - '>='
47
48
  - !ruby/object:Gem::Version
48
49
  version: '0'
49
50
  type: :development
50
51
  prerelease: false
51
52
  version_requirements: !ruby/object:Gem::Requirement
52
53
  requirements:
53
- - - ">="
54
+ - - '>='
54
55
  - !ruby/object:Gem::Version
55
56
  version: '0'
56
57
  - !ruby/object:Gem::Dependency
57
- name: rspec-mocks
58
+ name: rspec-command
58
59
  requirement: !ruby/object:Gem::Requirement
59
60
  requirements:
60
- - - ">="
61
+ - - '>='
61
62
  - !ruby/object:Gem::Version
62
63
  version: '0'
63
64
  type: :development
64
65
  prerelease: false
65
66
  version_requirements: !ruby/object:Gem::Requirement
66
67
  requirements:
67
- - - ">="
68
+ - - '>='
68
69
  - !ruby/object:Gem::Version
69
70
  version: '0'
70
71
  - !ruby/object:Gem::Dependency
71
- name: rspec-command
72
+ name: rspec-mocks
72
73
  requirement: !ruby/object:Gem::Requirement
73
74
  requirements:
74
- - - ">="
75
+ - - '>='
75
76
  - !ruby/object:Gem::Version
76
77
  version: '0'
77
78
  type: :development
78
79
  prerelease: false
79
80
  version_requirements: !ruby/object:Gem::Requirement
80
81
  requirements:
81
- - - ">="
82
+ - - '>='
82
83
  - !ruby/object:Gem::Version
83
84
  version: '0'
84
85
  - !ruby/object:Gem::Dependency
85
- name: simplecov
86
+ name: rspec
86
87
  requirement: !ruby/object:Gem::Requirement
87
88
  requirements:
88
- - - ">="
89
+ - - '>='
89
90
  - !ruby/object:Gem::Version
90
91
  version: '0'
91
92
  type: :development
92
93
  prerelease: false
93
94
  version_requirements: !ruby/object:Gem::Requirement
94
95
  requirements:
95
- - - ">="
96
+ - - '>='
96
97
  - !ruby/object:Gem::Version
97
98
  version: '0'
98
99
  - !ruby/object:Gem::Dependency
99
- name: pry
100
+ name: simplecov
100
101
  requirement: !ruby/object:Gem::Requirement
101
102
  requirements:
102
- - - ">="
103
+ - - '>='
103
104
  - !ruby/object:Gem::Version
104
105
  version: '0'
105
106
  type: :development
106
107
  prerelease: false
107
108
  version_requirements: !ruby/object:Gem::Requirement
108
109
  requirements:
109
- - - ">="
110
+ - - '>='
110
111
  - !ruby/object:Gem::Version
111
112
  version: '0'
112
113
  - !ruby/object:Gem::Dependency
113
114
  name: pry-byebug
114
115
  requirement: !ruby/object:Gem::Requirement
115
116
  requirements:
116
- - - ">="
117
+ - - '>='
117
118
  - !ruby/object:Gem::Version
118
119
  version: '0'
119
120
  type: :development
120
121
  prerelease: false
121
122
  version_requirements: !ruby/object:Gem::Requirement
122
123
  requirements:
123
- - - ">="
124
+ - - '>='
124
125
  - !ruby/object:Gem::Version
125
126
  version: '0'
126
127
  - !ruby/object:Gem::Dependency
127
128
  name: listen
128
129
  requirement: !ruby/object:Gem::Requirement
129
130
  requirements:
130
- - - "~>"
131
+ - - ~>
131
132
  - !ruby/object:Gem::Version
132
133
  version: 3.0.8
133
134
  type: :development
134
135
  prerelease: false
135
136
  version_requirements: !ruby/object:Gem::Requirement
136
137
  requirements:
137
- - - "~>"
138
+ - - ~>
138
139
  - !ruby/object:Gem::Version
139
140
  version: 3.0.8
140
141
  - !ruby/object:Gem::Dependency
141
142
  name: guard-ctags-bundler
142
143
  requirement: !ruby/object:Gem::Requirement
143
144
  requirements:
144
- - - ">="
145
+ - - '>='
145
146
  - !ruby/object:Gem::Version
146
147
  version: '0'
147
148
  type: :development
148
149
  prerelease: false
149
150
  version_requirements: !ruby/object:Gem::Requirement
150
151
  requirements:
151
- - - ">="
152
+ - - '>='
152
153
  - !ruby/object:Gem::Version
153
154
  version: '0'
154
155
  - !ruby/object:Gem::Dependency
155
- name: json
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - "~>"
159
- - !ruby/object:Gem::Version
160
- version: '1.8'
161
- type: :runtime
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - "~>"
166
- - !ruby/object:Gem::Version
167
- version: '1.8'
168
- - !ruby/object:Gem::Dependency
169
- name: logger-colors
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - "~>"
173
- - !ruby/object:Gem::Version
174
- version: '1'
175
- type: :runtime
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - "~>"
180
- - !ruby/object:Gem::Version
181
- version: '1'
182
- - !ruby/object:Gem::Dependency
183
- name: rbovirt
156
+ name: dop_common
184
157
  requirement: !ruby/object:Gem::Requirement
185
158
  requirements:
186
- - - "~>"
159
+ - - ~>
187
160
  - !ruby/object:Gem::Version
188
- version: '0.1'
189
- - - ">="
161
+ version: '0.15'
162
+ - - '>='
190
163
  - !ruby/object:Gem::Version
191
- version: 0.1.3
164
+ version: 0.15.2
192
165
  type: :runtime
193
166
  prerelease: false
194
167
  version_requirements: !ruby/object:Gem::Requirement
195
168
  requirements:
196
- - - "~>"
169
+ - - ~>
197
170
  - !ruby/object:Gem::Version
198
- version: '0.1'
199
- - - ">="
171
+ version: '0.15'
172
+ - - '>='
200
173
  - !ruby/object:Gem::Version
201
- version: 0.1.3
174
+ version: 0.15.2
202
175
  - !ruby/object:Gem::Dependency
203
- name: rbvmomi
176
+ name: fog
204
177
  requirement: !ruby/object:Gem::Requirement
205
178
  requirements:
206
- - - "~>"
179
+ - - ~>
207
180
  - !ruby/object:Gem::Version
208
- version: 1.8.2
181
+ version: 1.36.0
209
182
  type: :runtime
210
183
  prerelease: false
211
184
  version_requirements: !ruby/object:Gem::Requirement
212
185
  requirements:
213
- - - "~>"
186
+ - - ~>
214
187
  - !ruby/object:Gem::Version
215
- version: 1.8.2
188
+ version: 1.36.0
216
189
  - !ruby/object:Gem::Dependency
217
- name: net-ssh
190
+ name: gli
218
191
  requirement: !ruby/object:Gem::Requirement
219
192
  requirements:
220
- - - "<"
193
+ - - ~>
221
194
  - !ruby/object:Gem::Version
222
- version: '3.0'
195
+ version: 2.13.1
223
196
  type: :runtime
224
197
  prerelease: false
225
198
  version_requirements: !ruby/object:Gem::Requirement
226
199
  requirements:
227
- - - "<"
200
+ - - ~>
228
201
  - !ruby/object:Gem::Version
229
- version: '3.0'
202
+ version: 2.13.1
230
203
  - !ruby/object:Gem::Dependency
231
- name: fog-google
204
+ name: json
232
205
  requirement: !ruby/object:Gem::Requirement
233
206
  requirements:
234
- - - "<"
207
+ - - ~>
235
208
  - !ruby/object:Gem::Version
236
- version: 0.1.1
209
+ version: '1.8'
237
210
  type: :runtime
238
211
  prerelease: false
239
212
  version_requirements: !ruby/object:Gem::Requirement
240
213
  requirements:
241
- - - "<"
214
+ - - ~>
242
215
  - !ruby/object:Gem::Version
243
- version: 0.1.1
216
+ version: '1.8'
244
217
  - !ruby/object:Gem::Dependency
245
- name: fog-profitbricks
218
+ name: logger-colors
246
219
  requirement: !ruby/object:Gem::Requirement
247
220
  requirements:
248
- - - "~>"
221
+ - - ~>
249
222
  - !ruby/object:Gem::Version
250
- version: 0.0.5
223
+ version: '1'
251
224
  type: :runtime
252
225
  prerelease: false
253
226
  version_requirements: !ruby/object:Gem::Requirement
254
227
  requirements:
255
- - - "~>"
228
+ - - ~>
256
229
  - !ruby/object:Gem::Version
257
- version: 0.0.5
230
+ version: '1'
258
231
  - !ruby/object:Gem::Dependency
259
- name: fog
232
+ name: rbovirt
260
233
  requirement: !ruby/object:Gem::Requirement
261
234
  requirements:
262
- - - "~>"
263
- - !ruby/object:Gem::Version
264
- version: 1.36.0
265
- type: :runtime
266
- prerelease: false
267
- version_requirements: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
235
+ - - ~>
270
236
  - !ruby/object:Gem::Version
271
- version: 1.36.0
272
- - !ruby/object:Gem::Dependency
273
- name: gli
274
- requirement: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
237
+ version: '0.1'
238
+ - - '>='
277
239
  - !ruby/object:Gem::Version
278
- version: 2.13.1
240
+ version: 0.1.3
279
241
  type: :runtime
280
242
  prerelease: false
281
243
  version_requirements: !ruby/object:Gem::Requirement
282
244
  requirements:
283
- - - "~>"
245
+ - - ~>
284
246
  - !ruby/object:Gem::Version
285
- version: 2.13.1
247
+ version: '0.1'
248
+ - - '>='
249
+ - !ruby/object:Gem::Version
250
+ version: 0.1.3
286
251
  - !ruby/object:Gem::Dependency
287
- name: dop_common
252
+ name: rbvmomi
288
253
  requirement: !ruby/object:Gem::Requirement
289
254
  requirements:
290
- - - "~>"
255
+ - - ~>
291
256
  - !ruby/object:Gem::Version
292
- version: '0.14'
293
- - - ">="
294
- - !ruby/object:Gem::Version
295
- version: 0.14.0
257
+ version: 1.8.2
296
258
  type: :runtime
297
259
  prerelease: false
298
260
  version_requirements: !ruby/object:Gem::Requirement
299
261
  requirements:
300
- - - "~>"
301
- - !ruby/object:Gem::Version
302
- version: '0.14'
303
- - - ">="
262
+ - - ~>
304
263
  - !ruby/object:Gem::Version
305
- version: 0.14.0
264
+ version: 1.8.2
306
265
  - !ruby/object:Gem::Dependency
307
266
  name: parallel
308
267
  requirement: !ruby/object:Gem::Requirement
309
268
  requirements:
310
- - - "~>"
269
+ - - ~>
311
270
  - !ruby/object:Gem::Version
312
271
  version: '1'
313
272
  type: :runtime
314
273
  prerelease: false
315
274
  version_requirements: !ruby/object:Gem::Requirement
316
275
  requirements:
317
- - - "~>"
276
+ - - ~>
318
277
  - !ruby/object:Gem::Version
319
278
  version: '1'
320
279
  description: Deployment orchestrator for VMs
321
280
  email:
322
281
  - pavol.dilung@swisscom.com
323
282
  - azuber@puzzle.ch
283
+ - christian.schefuss@swisscom.com
324
284
  executables:
325
285
  - dopv
326
286
  extensions: []
327
287
  extra_rdoc_files: []
328
288
  files:
329
- - ".gitignore"
330
- - ".rspec"
289
+ - .gitignore
290
+ - .rspec
291
+ - .ruby-version
331
292
  - ChangeLog.md
332
293
  - Gemfile
333
294
  - Gemfile.lock
@@ -376,17 +337,17 @@ require_paths:
376
337
  - lib
377
338
  required_ruby_version: !ruby/object:Gem::Requirement
378
339
  requirements:
379
- - - ">="
340
+ - - '>='
380
341
  - !ruby/object:Gem::Version
381
- version: '0'
342
+ version: 1.9.3
382
343
  required_rubygems_version: !ruby/object:Gem::Requirement
383
344
  requirements:
384
- - - ">="
345
+ - - '>='
385
346
  - !ruby/object:Gem::Version
386
347
  version: '0'
387
348
  requirements: []
388
349
  rubyforge_project:
389
- rubygems_version: 2.4.5
350
+ rubygems_version: 2.6.14
390
351
  signing_key:
391
352
  specification_version: 4
392
353
  summary: Deployment orchestrator for VMs