gogetit 0.21.0 → 0.21.1

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
  SHA256:
3
- metadata.gz: b3c995acc5f536c6cd8b860e0c025d5da14d55a5b00cba8fae71cba612a81aa0
4
- data.tar.gz: 512981119248e95559725188ce2203ba85b520e224d4948691ebbb30ce6f39f1
3
+ metadata.gz: cec3025d3d37da25d264556d84373b5211c09640877117aaf2edfde182545f64
4
+ data.tar.gz: e7e3d060a85d03cf7720f9563582f35c45472eb53dd338c47b6abef3393ad036
5
5
  SHA512:
6
- metadata.gz: 76757d10c32ed818bbff5749259ba0031b0025d2bad170dcab8d79396c3a09a259ddc9f7254ea4a5e3dcee48b702c591a8b4401f4401d6d60b34d3a3aa5a4866
7
- data.tar.gz: 9a56506d5b228f248105f456306bb342728ce4f966a50c7cfb8f4310692c8216a08287cb794137dad9c89e7ada8c6159fb2b49b840af86cd1c3b5ff2dfb8306d
6
+ metadata.gz: 4c55e8011cbd55993e901135cf4fdb0b8eca24c8abe8c5b78e43f233396689eb6a4931569245f898d3794cf7c7d350a9b3da125dfdb4d169b9462921edf73a25
7
+ data.tar.gz: 19798bb065fba34ac5f6c51ebf699bed5cab7e9143d26bcc97ae335e21d43c8d454899a827a5c01735fc383ed5bff5dfe2d24415afeb64c4bb27a7b708396e29
@@ -78,32 +78,32 @@ module Gogetit
78
78
  :desc => 'File location(only for LXD provider)'
79
79
  def create(name)
80
80
  abort("'vlans' and 'ipaddresses' can not be set together.") \
81
- if options['vlans'] and options['ipaddresses']
81
+ if options[:vlans] and options[:ipaddresses]
82
82
  abort("'chef' and 'zero' can not be set together.") \
83
- if options['chef'] and options['zero']
83
+ if options[:chef] and options[:zero]
84
84
  abort("when 'no-maas', the network configuration have to be set by 'file'.") \
85
- if options['no-maas'] and (options['vlans'] or options['ipaddresses'])
85
+ if options[:'no-maas'] and (options[:vlans] or options[:ipaddresses])
86
86
  abort("'no-maas' and 'file' have to be set together.") \
87
- if options['no-maas'] ^ !!options['file']
88
- abort("'distro' has to be set with libvirt provider.") \
89
- if options['distro'] and options['provider'] == 'lxd'
87
+ if options[:'no-maas'] ^ !!options[:file]
88
+ abort("'distro' has to be set only with libvirt provider.") \
89
+ if options[:distro] and options[:provider] == 'lxd'
90
90
  abort("'alias' has to be set with lxd provider.") \
91
- if options['alias'] and options['provider'] == 'libvirt'
91
+ if options[:alias] and options[:provider] == 'libvirt'
92
92
 
93
- case options['provider']
93
+ case options[:provider]
94
94
  when 'lxd'
95
- Gogetit::CLI.result = lxd.create(name, options.to_hash)
95
+ Gogetit::CLI.result = lxd.create(name, options)
96
96
  when 'libvirt'
97
- Gogetit::CLI.result = libvirt.create(name, options.to_hash)
97
+ Gogetit::CLI.result = libvirt.create(name, options)
98
98
  else
99
99
  abort('Invalid argument entered.')
100
100
  end
101
101
 
102
102
  # post-tasks
103
- if options['chef']
103
+ if options[:chef]
104
104
  knife_bootstrap_chef(name, options[:provider], config)
105
105
  update_databags(config)
106
- elsif options['zero']
106
+ elsif options[:zero]
107
107
  knife_bootstrap_zero(name, options[:provider], config)
108
108
  end
109
109
  end
@@ -115,7 +115,7 @@ module Gogetit
115
115
  :default => false, :desc => 'Chef Zero awareness'
116
116
  def destroy(name)
117
117
  abort("'chef' and 'zero' can not be set together.") \
118
- if options['chef'] and options['zero']
118
+ if options[:chef] and options[:zero]
119
119
 
120
120
  provider = get_provider_of(name, providers)
121
121
  if provider
@@ -129,10 +129,10 @@ module Gogetit
129
129
  end
130
130
  end
131
131
  # post-tasks
132
- if options['chef']
132
+ if options[:chef]
133
133
  knife_remove(name, options)
134
134
  update_databags(config)
135
- elsif options['zero']
135
+ elsif options[:zero]
136
136
  knife_remove(name, options)
137
137
  end
138
138
  end
@@ -146,15 +146,15 @@ module Gogetit
146
146
  :default => false, :desc => 'Chef Zero awareness'
147
147
  def deploy(name)
148
148
  abort("'chef' and 'zero' can not be set together.") \
149
- if options['chef'] and options['zero']
149
+ if options[:chef] and options[:zero]
150
150
 
151
- Gogetit::CLI.result = libvirt.deploy(name, options.to_hash)
151
+ Gogetit::CLI.result = libvirt.deploy(name, options)
152
152
 
153
153
  # post-tasks
154
- if options['chef']
154
+ if options[:chef]
155
155
  knife_bootstrap(name, options[:provider], config)
156
156
  update_databags(config)
157
- elsif options['zero']
157
+ elsif options[:zero]
158
158
  knife_bootstrap_zero(name, options[:provider], config)
159
159
  end
160
160
  end
@@ -167,15 +167,15 @@ module Gogetit
167
167
  :default => false, :desc => 'Chef Zero awareness'
168
168
  def release(name)
169
169
  abort("'chef' and 'zero' can not be set together.") \
170
- if options['chef'] and options['zero']
170
+ if options[:chef] and options[:zero]
171
171
 
172
172
  Gogetit::CLI.result = libvirt.release(name)
173
173
 
174
174
  # post-tasks
175
- if options['chef']
175
+ if options[:chef]
176
176
  knife_remove(name, options)
177
177
  update_databags(config)
178
- elsif options['zero']
178
+ elsif options[:zero]
179
179
  knife_remove(name, options)
180
180
  end
181
181
  end
@@ -188,7 +188,7 @@ module Gogetit
188
188
  :default => false, :desc => 'Chef Zero awareness'
189
189
  def rebuild(name)
190
190
  abort("'chef' and 'zero' can not be set together.") \
191
- if options['chef'] and options['zero']
191
+ if options[:chef] and options[:zero]
192
192
 
193
193
  provider = get_provider_of(name, providers)
194
194
  if provider
@@ -212,7 +212,7 @@ module Gogetit
212
212
  end
213
213
  end
214
214
  # post-tasks
215
- if options['chef']
215
+ if options[:chef]
216
216
  knife_remove(name) if options[:chef]
217
217
  update_databags(config)
218
218
  end
@@ -104,7 +104,7 @@ module Gogetit
104
104
  def knife_remove(name, options)
105
105
  logger.info("Calling <#{__method__.to_s}>")
106
106
  if find_executable 'knife'
107
- if options['chef']
107
+ if options[:chef]
108
108
  if system('knife ssl check')
109
109
  logger.info("With chef-server..")
110
110
  puts "Deleting node #{name}.."
@@ -116,7 +116,7 @@ module Gogetit
116
116
  else
117
117
  abort('knife is not configured properly.')
118
118
  end
119
- elsif options['zero']
119
+ elsif options[:zero]
120
120
  logger.info("With chef-zero..")
121
121
  puts "Deleting node #{name}.."
122
122
  logger.info("knife node delete -y #{name}")
@@ -270,7 +270,7 @@ module Gogetit
270
270
  # preserve source list for a while
271
271
  user_data['apt']['preserve_sources_list'] = true
272
272
 
273
- if options['no-maas']
273
+ if options[:'no-maas']
274
274
  # When there is no MAAS, containers should be able to resolve
275
275
  # their name with hosts file.
276
276
  user_data['manage_etc_hosts'] = true
@@ -1,3 +1,3 @@
1
1
  module Gogetit
2
- VERSION = "0.21.0"
2
+ VERSION = "0.21.1"
3
3
  end
@@ -4,6 +4,8 @@ require 'oga'
4
4
  require 'rexml/document'
5
5
  require 'gogetit/util'
6
6
  require 'yaml'
7
+ require 'base64'
8
+ require 'hashie'
7
9
 
8
10
  module Gogetit
9
11
  class GogetLibvirt
@@ -161,11 +163,11 @@ module Gogetit
161
163
  domain = config[:libvirt][:specs][:default]
162
164
  ifaces = nil
163
165
 
164
- if options['ipaddresses']
165
- ifaces = check_ip_available(options['ipaddresses'], maas)
166
+ if options[:ipaddresses]
167
+ ifaces = check_ip_available(options[:ipaddresses], maas)
166
168
  domain = generate_nics(ifaces, domain)
167
- elsif options['vlans']
168
- #check_vlan_available(options['vlans'])
169
+ elsif options[:vlans]
170
+ #check_vlan_available(options[:vlans])
169
171
  else
170
172
  domain[:nic] = [
171
173
  {
@@ -184,10 +186,10 @@ module Gogetit
184
186
  system_id = maas.get_system_id(domain[:name])
185
187
  maas.wait_until_state(system_id, 'Ready')
186
188
 
187
- if options['ipaddresses']
189
+ if options[:ipaddresses]
188
190
  configure_interfaces(ifaces, system_id)
189
- elsif options['vlans']
190
- #check_vlan_available(options['vlans'])
191
+ elsif options[:vlans]
192
+ #check_vlan_available(options[:vlans])
191
193
  else
192
194
  end
193
195
 
@@ -250,10 +252,11 @@ module Gogetit
250
252
  distro = options[:distro]
251
253
  end
252
254
 
253
- require 'base64'
254
255
  user_data = Base64.encode64(
255
256
  "#cloud-config\n" +
256
- YAML.dump(generate_cloud_init_config(options, config))[4..-1]
257
+ YAML.dump(
258
+ generate_cloud_init_config(options, config)
259
+ )[4..-1]
257
260
  )
258
261
 
259
262
  maas.conn.request(
@@ -51,7 +51,7 @@ module Gogetit
51
51
 
52
52
  lxd_params[:config] = {}
53
53
 
54
- if options['no-maas']
54
+ if options[:'no-maas']
55
55
  lxd_params[:config][:"user.user-data"] = {}
56
56
  else
57
57
  sshkeys = maas.get_sshkeys
@@ -73,11 +73,11 @@ module Gogetit
73
73
  lxd_params[:config][:"user.user-data"]['maas'] = true
74
74
  end
75
75
 
76
- if options['maas-on-lxc']
76
+ if options[:'maas-on-lxc']
77
77
  lxd_params[:config][:"security.privileged"] = "true"
78
78
  end
79
79
 
80
- if options['lxd-in-lxd']
80
+ if options[:'lxd-in-lxd']
81
81
  lxd_params[:config][:"security.nesting"] = "true"
82
82
  end
83
83
 
@@ -103,22 +103,22 @@ module Gogetit
103
103
  def generate_network_config(lxd_params, options)
104
104
  logger.info("Calling <#{__method__.to_s}>")
105
105
 
106
- if options['no-maas']
106
+ if options[:'no-maas']
107
107
  lxd_params[:config][:'user.network-config'] = \
108
- YAML.load_file(options['file'])['network']
108
+ YAML.load_file(options[:file])['network']
109
109
 
110
110
  # physical device will be the gate device
111
111
  lxd_params[:config][:"user.network-config"]['config'].each do |iface|
112
112
  if iface['type'] == "physical"
113
- options['ip_to_access'] = iface['subnets'][0]['address'].split('/')[0]
113
+ options[:ip_to_access] = iface['subnets'][0]['address'].split('/')[0]
114
114
  end
115
115
  end
116
116
 
117
117
  lxd_params[:config][:"user.network-config"] = \
118
118
  YAML.dump(lxd_params[:config][:"user.network-config"])[4..-1]
119
119
 
120
- elsif options['ipaddresses']
121
- options[:ifaces] = check_ip_available(options['ipaddresses'], maas)
120
+ elsif options[:ipaddresses]
121
+ options[:ifaces] = check_ip_available(options[:ipaddresses], maas)
122
122
  abort("There is no dns server specified for the gateway network.") \
123
123
  unless options[:ifaces][0]['dns_servers'][0]
124
124
  abort("There is no gateway specified for the gateway network.") \
@@ -200,8 +200,8 @@ module Gogetit
200
200
  logger.info("Calling <#{__method__.to_s}>")
201
201
  lxd_params[:devices] = {}
202
202
 
203
- if options['no-maas']
204
- lxd_params[:devices] = YAML.load_file(options['file'])['devices']
203
+ if options[:'no-maas']
204
+ lxd_params[:devices] = YAML.load_file(options[:file])['devices']
205
205
 
206
206
  # Now, LXD API can handle integer as a value of a map
207
207
  lxd_params[:devices].each do |k, v|
@@ -214,7 +214,7 @@ module Gogetit
214
214
 
215
215
  lxd_params[:devices] = (Hashie.symbolize_keys lxd_params[:devices])
216
216
 
217
- elsif options['ipaddresses']
217
+ elsif options[:ipaddresses]
218
218
  options[:ifaces].each_with_index do |iface,index|
219
219
  if index == 0
220
220
  if iface['vlan']['name'] == 'untagged' # or vid == 0
@@ -275,7 +275,7 @@ module Gogetit
275
275
  }
276
276
  end
277
277
 
278
- if options['maas-on-lxc']
278
+ if options[:'maas-on-lxc']
279
279
  # https://docs.maas.io/2.4/en/installconfig-lxd-install
280
280
  for i in 0..7
281
281
  i = i.to_s
@@ -327,21 +327,18 @@ module Gogetit
327
327
  def create(name, options = {})
328
328
  logger.info("Calling <#{__method__.to_s}>")
329
329
 
330
- # options from the kitchen driver have keys as symbol
331
- Hashie.stringify_keys! options
332
-
333
330
  abort("Container #{name} already exists!") \
334
331
  if container_exists?(name)
335
332
 
336
333
  abort("Domain #{name}.#{maas.get_domain} already exists!") \
337
- if maas.domain_name_exists?(name) unless options['no-maas']
334
+ if maas.domain_name_exists?(name) unless options[:'no-maas']
338
335
 
339
336
  lxd_params = {}
340
337
 
341
- if options['alias'].nil? or options['alias'].empty?
338
+ if options[:alias].nil? or options[:alias].empty?
342
339
  lxd_params[:alias] = config[:lxd][:default_alias]
343
340
  else
344
- lxd_params[:alias] = options['alias']
341
+ lxd_params[:alias] = options[:alias]
345
342
  end
346
343
 
347
344
  lxd_params = generate_user_data(lxd_params, options)
@@ -357,7 +354,7 @@ module Gogetit
357
354
 
358
355
  # https://github.com/jeffshantz/hyperkit/blob/master/lib/hyperkit/client/containers.rb#L240
359
356
  # Adding configurations that are necessary for shipping MAAS on lxc
360
- if options['maas-on-lxc']
357
+ if options[:'maas-on-lxc']
361
358
  container.config = container.config.to_hash
362
359
  # https://docs.maas.io/2.4/en/installconfig-lxd-install
363
360
  container.config[:"raw.lxc"] = "\
@@ -371,13 +368,13 @@ lxc.cgroup.devices.allow = b 7:* rwm"
371
368
  container = conn.container(name)
372
369
 
373
370
  reserve_ips(name, options, container) \
374
- if options['vlans'] or options['ipaddresses'] \
375
- unless options['no-maas']
371
+ if options[:vlans] or options[:ipaddresses] \
372
+ unless options[:'no-maas']
376
373
 
377
374
  conn.start_container(name, :sync=>"true")
378
375
 
379
- if options['no-maas']
380
- ip_or_fqdn = options['ip_to_access']
376
+ if options[:'no-maas']
377
+ ip_or_fqdn = options[:ip_to_access]
381
378
  else
382
379
  ip_or_fqdn = name + '.' + maas.get_domain
383
380
  end
@@ -395,8 +392,8 @@ lxc.cgroup.devices.allow = b 7:* rwm"
395
392
  wait_until_available(ip_or_fqdn, default_user)
396
393
  logger.info("#{name} has been created.")
397
394
 
398
- if options['no-maas']
399
- puts "ssh #{default_user}@#{options['ip_to_access']}"
395
+ if options[:'no-maas']
396
+ puts "ssh #{default_user}@#{options[:ip_to_access]}"
400
397
  else
401
398
  puts "ssh #{default_user}@#{name}"
402
399
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gogetit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.21.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Don Draper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-19 00:00:00.000000000 Z
11
+ date: 2018-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler