dopv 0.13.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
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