vagrant-lxd 0.4.2 → 0.5.1

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
  SHA256:
3
- metadata.gz: 9cb6183072655327362dc5ffa996c3e8c47f5c830f42a00137dd54773ffe9a0b
4
- data.tar.gz: ccb1553ba6250ca2db4dea858e6423a2c4bb76d0de39c572b00566bc6b042084
3
+ metadata.gz: 8cb23ce782dbe622c94d34c2e921ef57ddb4851c25196b898061a840efff44e9
4
+ data.tar.gz: 807dd8fa2ec7b241a434fcba53f9d27a0c01b14ce4eca35ee3db60972e43486f
5
5
  SHA512:
6
- metadata.gz: 36e71d95e6cad74f4b08b7d434c1bce4517a0b4604d9895dcf18f2fbf07384814c40bfacf4772dc393b3d9ca520606162ef4ab4edb266e04ab0ddb2ade616ee2
7
- data.tar.gz: b1c9d6b3af391533368c3a84a1d54e2b63e0d00908810a0acd922ad9ebda4cdd5a4be537b7c6e1998ed1e3d96268b189cec0e82dfdaa4babf14af51cf8591183
6
+ metadata.gz: '03932c7c4f744a52f48139f43b6e5a88884c4a550e17def2c010dd07540d50f6026e5599408157a4a259cca5aee50459961148c6c22c1c3ddbc4dcd995de5cb6'
7
+ data.tar.gz: be9c7d029dee32606626f8d27f6f780c42aa9553727ed0ad5ea3c1ed5e28f37869f6c6859db7591b233dc67c9260ad786dcca7bdce581d330e12704b7cdbf363
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  /.bundle/
2
+ /.tool-versions
2
3
  /.vagrant/
3
- /pkg/
4
4
  /Vagrantfile
5
+ /pkg/
5
6
  /vendor/
@@ -1,4 +1,4 @@
1
- image: "ruby:2.3"
1
+ image: ruby:2.5
2
2
 
3
3
  before_script:
4
4
  - apt-get -y update
data/Gemfile CHANGED
@@ -1,12 +1,13 @@
1
1
  source 'https://rubygems.org/'
2
2
 
3
3
  group :development do
4
+ require 'pp' # avoid superclass mismatch error
4
5
  gem 'fakefs'
5
6
  gem 'rake'
6
7
  gem 'rspec'
7
8
  gem 'rspec-its'
8
9
  gem 'rspec-mocks'
9
- gem 'vagrant', :git => 'https://github.com/mitchellh/vagrant.git'
10
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
10
11
  end
11
12
 
12
13
  group :plugins do
@@ -1,59 +1,62 @@
1
1
  GIT
2
2
  remote: https://github.com/mitchellh/vagrant.git
3
- revision: d0115de80e2258c36c2ef451f26217d9ac679808
3
+ revision: 2063111ab5cfcce0f6b2dbcecd9d24d47b512a96
4
4
  specs:
5
- vagrant (2.2.5.dev)
5
+ vagrant (2.2.10.dev)
6
6
  bcrypt_pbkdf (~> 1.0.0)
7
- childprocess (~> 0.6.0)
7
+ childprocess (~> 4.0.0)
8
8
  ed25519 (~> 1.2.4)
9
9
  erubis (~> 2.7.0)
10
10
  hashicorp-checkpoint (~> 0.1.5)
11
- i18n (~> 1.1.1)
12
- listen (~> 3.1.5)
11
+ i18n (~> 1.8)
12
+ listen (~> 3.1)
13
13
  log4r (~> 1.1.9, < 1.1.11)
14
+ mime (~> 0.4.4)
14
15
  net-scp (~> 1.2.0)
15
- net-sftp (~> 2.1)
16
- net-ssh (~> 5.1.0)
16
+ net-sftp (~> 3.0)
17
+ net-ssh (~> 6.0)
17
18
  rb-kqueue (~> 0.2.0)
18
19
  rest-client (>= 1.6.0, < 3.0)
19
20
  ruby_dep (<= 1.3.1)
20
- rubyzip (~> 1.2.2)
21
- vagrant_cloud (~> 2.0.2)
21
+ rubyzip (~> 2.0)
22
+ vagrant_cloud (~> 2.0.3)
22
23
  wdm (~> 0.1.0)
23
- winrm (~> 2.1)
24
- winrm-elevated (~> 1.1)
25
- winrm-fs (~> 1.0)
24
+ winrm (>= 2.3.4, < 3.0)
25
+ winrm-elevated (>= 1.2.1, < 2.0)
26
+ winrm-fs (>= 1.3.4, < 2.0)
26
27
 
27
28
  PATH
28
29
  remote: .
29
30
  specs:
30
- vagrant-lxd (0.4.2)
31
- hyperkit (~> 1.2.0)
31
+ vagrant-lxd (0.5.1)
32
+ activesupport (~> 5.2.3)
33
+ faraday (~> 0.17)
34
+ hyperkit (~> 1.3.0)
32
35
 
33
36
  GEM
34
37
  remote: https://rubygems.org/
35
38
  specs:
36
- activesupport (5.2.3)
39
+ activesupport (5.2.4.3)
37
40
  concurrent-ruby (~> 1.0, >= 1.0.2)
38
41
  i18n (>= 0.7, < 2)
39
42
  minitest (~> 5.1)
40
43
  tzinfo (~> 1.1)
41
- addressable (2.6.0)
42
- public_suffix (>= 2.0.2, < 4.0)
44
+ addressable (2.7.0)
45
+ public_suffix (>= 2.0.2, < 5.0)
43
46
  bcrypt_pbkdf (1.0.1)
44
- builder (3.2.3)
45
- childprocess (0.6.3)
46
- ffi (~> 1.0, >= 1.0.11)
47
- concurrent-ruby (1.1.5)
48
- diff-lcs (1.3)
49
- domain_name (0.5.20180417)
47
+ builder (3.2.4)
48
+ childprocess (4.0.0)
49
+ concurrent-ruby (1.1.7)
50
+ diff-lcs (1.4.4)
51
+ domain_name (0.5.20190701)
50
52
  unf (>= 0.0.5, < 1.0.0)
51
53
  ed25519 (1.2.4)
54
+ erubi (1.9.0)
52
55
  erubis (2.7.0)
53
- fakefs (0.20.1)
54
- faraday (0.15.4)
56
+ fakefs (1.2.2)
57
+ faraday (0.17.3)
55
58
  multipart-post (>= 1.2, < 3)
56
- ffi (1.11.1)
59
+ ffi (1.13.1)
57
60
  gssapi (1.3.0)
58
61
  ffi (>= 1.0.1)
59
62
  gyoku (1.3.1)
@@ -62,37 +65,37 @@ GEM
62
65
  http-cookie (1.0.3)
63
66
  domain_name (~> 0.5)
64
67
  httpclient (2.8.3)
65
- hyperkit (1.2.0)
68
+ hyperkit (1.3.0)
66
69
  activesupport (>= 4.2.6)
67
70
  sawyer
68
- i18n (1.1.1)
71
+ i18n (1.8.5)
69
72
  concurrent-ruby (~> 1.0)
70
- listen (3.1.5)
71
- rb-fsevent (~> 0.9, >= 0.9.4)
72
- rb-inotify (~> 0.9, >= 0.9.7)
73
- ruby_dep (~> 1.2)
73
+ listen (3.2.1)
74
+ rb-fsevent (~> 0.10, >= 0.10.3)
75
+ rb-inotify (~> 0.9, >= 0.9.10)
74
76
  little-plugger (1.1.4)
75
77
  log4r (1.1.10)
76
- logging (2.2.2)
78
+ logging (2.3.0)
77
79
  little-plugger (~> 1.1)
78
- multi_json (~> 1.10)
79
- mime-types (3.2.2)
80
+ multi_json (~> 1.14)
81
+ mime (0.4.4)
82
+ mime-types (3.3.1)
80
83
  mime-types-data (~> 3.2015)
81
- mime-types-data (3.2019.0331)
82
- minitest (5.11.3)
83
- multi_json (1.13.1)
84
+ mime-types-data (3.2020.0512)
85
+ minitest (5.14.1)
86
+ multi_json (1.15.0)
84
87
  multipart-post (2.1.1)
85
88
  net-scp (1.2.1)
86
89
  net-ssh (>= 2.6.5)
87
- net-sftp (2.1.2)
88
- net-ssh (>= 2.6.5)
89
- net-ssh (5.1.0)
90
+ net-sftp (3.0.0)
91
+ net-ssh (>= 5.0.0, < 7.0.0)
92
+ net-ssh (6.1.0)
90
93
  netrc (0.11.0)
91
94
  nori (2.6.0)
92
- public_suffix (3.1.1)
93
- rake (12.3.2)
94
- rb-fsevent (0.10.3)
95
- rb-inotify (0.10.0)
95
+ public_suffix (4.0.5)
96
+ rake (13.0.1)
97
+ rb-fsevent (0.10.4)
98
+ rb-inotify (0.10.1)
96
99
  ffi (~> 1.0)
97
100
  rb-kqueue (0.2.5)
98
101
  ffi (>= 0.5.0)
@@ -100,53 +103,54 @@ GEM
100
103
  http-cookie (>= 1.0.2, < 2.0)
101
104
  mime-types (>= 1.16, < 4.0)
102
105
  netrc (~> 0.8)
103
- rspec (3.8.0)
104
- rspec-core (~> 3.8.0)
105
- rspec-expectations (~> 3.8.0)
106
- rspec-mocks (~> 3.8.0)
107
- rspec-core (3.8.0)
108
- rspec-support (~> 3.8.0)
109
- rspec-expectations (3.8.3)
106
+ rspec (3.9.0)
107
+ rspec-core (~> 3.9.0)
108
+ rspec-expectations (~> 3.9.0)
109
+ rspec-mocks (~> 3.9.0)
110
+ rspec-core (3.9.2)
111
+ rspec-support (~> 3.9.3)
112
+ rspec-expectations (3.9.2)
110
113
  diff-lcs (>= 1.2.0, < 2.0)
111
- rspec-support (~> 3.8.0)
114
+ rspec-support (~> 3.9.0)
112
115
  rspec-its (1.3.0)
113
116
  rspec-core (>= 3.0.0)
114
117
  rspec-expectations (>= 3.0.0)
115
- rspec-mocks (3.8.0)
118
+ rspec-mocks (3.9.1)
116
119
  diff-lcs (>= 1.2.0, < 2.0)
117
- rspec-support (~> 3.8.0)
118
- rspec-support (3.8.0)
120
+ rspec-support (~> 3.9.0)
121
+ rspec-support (3.9.3)
119
122
  ruby_dep (1.3.1)
120
123
  rubyntlm (0.6.2)
121
- rubyzip (1.2.3)
124
+ rubyzip (2.3.0)
122
125
  sawyer (0.8.2)
123
126
  addressable (>= 2.3.5)
124
127
  faraday (> 0.8, < 2.0)
125
128
  thread_safe (0.3.6)
126
- tzinfo (1.2.5)
129
+ tzinfo (1.2.7)
127
130
  thread_safe (~> 0.1)
128
131
  unf (0.1.4)
129
132
  unf_ext
130
- unf_ext (0.0.7.6)
131
- vagrant_cloud (2.0.2)
133
+ unf_ext (0.0.7.7)
134
+ vagrant_cloud (2.0.3)
132
135
  rest-client (~> 2.0.2)
133
136
  wdm (0.1.1)
134
- winrm (2.3.2)
137
+ winrm (2.3.4)
135
138
  builder (>= 2.1.2)
136
- erubis (~> 2.7)
139
+ erubi (~> 1.8)
137
140
  gssapi (~> 1.2)
138
141
  gyoku (~> 1.0)
139
142
  httpclient (~> 2.2, >= 2.2.0.2)
140
143
  logging (>= 1.6.1, < 3.0)
141
144
  nori (~> 2.0)
142
145
  rubyntlm (~> 0.6.0, >= 0.6.1)
143
- winrm-elevated (1.1.1)
146
+ winrm-elevated (1.2.1)
147
+ erubi (~> 1.8)
144
148
  winrm (~> 2.0)
145
149
  winrm-fs (~> 1.0)
146
- winrm-fs (1.3.2)
147
- erubis (~> 2.7)
150
+ winrm-fs (1.3.4)
151
+ erubi (~> 1.8)
148
152
  logging (>= 1.6.1, < 3.0)
149
- rubyzip (~> 1.1)
153
+ rubyzip (~> 2.0)
150
154
  winrm (~> 2.0)
151
155
 
152
156
  PLATFORMS
@@ -162,4 +166,4 @@ DEPENDENCIES
162
166
  vagrant-lxd!
163
167
 
164
168
  BUNDLED WITH
165
- 2.0.2
169
+ 2.1.4
data/README.md CHANGED
@@ -13,7 +13,8 @@ The following features are currently supported:
13
13
  - VM management (create, suspend, destroy, etc.)
14
14
  - IPv4 networking
15
15
  - Synced folders
16
- - Snapshots
16
+ - Snapshots (via `vagrant snapshot`)
17
+ - Box Packaging (via `vagrant package`)
17
18
 
18
19
  The following features are not expected to work yet:
19
20
 
@@ -147,7 +148,7 @@ is passed through to LXD. The hash values should all be strings:
147
148
  recursive: 'false',
148
149
  }
149
150
 
150
- [disk]: https://lxd.readthedocs.io/en/latest/containers/#type-disk
151
+ [disk]: https://lxd.readthedocs.io/en/latest/instances/#type-disk
151
152
 
152
153
  ### Shared LXD Containers
153
154
 
@@ -233,7 +234,7 @@ to run graphical applications transparently from within the guest:
233
234
  Note that disk devices should be configured as [synced
234
235
  folders](#synced-folders) rather than ad-hoc devices.
235
236
 
236
- [device-config]: https://lxd.readthedocs.io/en/latest/containers/#device-configuration
237
+ [device-config]: https://lxd.readthedocs.io/en/latest/instances/#devices-configuration
237
238
 
238
239
  ## Hacking
239
240
 
@@ -37,7 +37,7 @@ automatically generate the certificate for you):
37
37
  newgrp lxd
38
38
 
39
39
  # create and add a client certificate
40
- lxc config trust add /home/ubuntu/.config/lxc/client.crt
40
+ lxc config trust add ~/.config/lxc/client.crt
41
41
  ```
42
42
 
43
43
  At this point everything should be set up for the plugin to work
@@ -124,6 +124,20 @@ module VagrantLXD
124
124
  end
125
125
  end
126
126
 
127
+ class Package
128
+ def initialize(app, env)
129
+ @app = app
130
+ @env = env
131
+ end
132
+
133
+ def call(env)
134
+ env['package.directory'] = env[:machine_package]
135
+ @app.call(env)
136
+ ensure
137
+ FileUtils.rm_rf(env[:machine_package])
138
+ end
139
+ end
140
+
127
141
  #
128
142
  # Action definitions.
129
143
  #
@@ -335,6 +349,24 @@ module VagrantLXD
335
349
  builder { |b| b.use SSHRun }
336
350
  end
337
351
 
352
+ def package
353
+ builder do |b|
354
+ b.use Call, state do |env, c|
355
+ case env[:machine_state]
356
+ when Vagrant::MachineState::NOT_CREATED_ID
357
+ next
358
+ when :frozen, :running
359
+ c.use halt
360
+ end
361
+
362
+ c.use Message, :info, 'Packaging machine...'
363
+ c.use LXD.action(:package)
364
+ c.use Package
365
+ c.use Vagrant::Action::General::Package
366
+ end
367
+ end
368
+ end
369
+
338
370
  private
339
371
 
340
372
  def builder
@@ -29,14 +29,33 @@ module VagrantLXD
29
29
  def Capability.synced_folders(env)
30
30
  logger = Log4r::Logger.new('vagrant::lxd::capability')
31
31
  logger.debug "Checking synced folders support for effective UID/GID #{Process.uid}/#{Process.gid}..."
32
- result = %w(uid gid).all? do |type|
32
+ %w(uid gid).all? do |type|
33
33
  begin
34
- File.readlines("/etc/sub#{type}").grep(/^root:#{Process.send(type)}:[1-9]/).any?
34
+ id = Process.send(type)
35
+ id_map = File.readlines("/etc/sub#{type}")
36
+ id_in_sub_id?(id, id_map)
35
37
  rescue StandardError => e
36
38
  logger.warn "Cannot read subordinate permissions file: #{e.message}"
37
39
  false
38
40
  end
39
41
  end
40
42
  end
43
+
44
+ # Determines whether the given numerical `id` is included in the
45
+ # subordinate map `id_map`, which should be an array of lines from
46
+ # the file /etc/subuid or /etc/subgid.
47
+ #
48
+ # Invalid lines, and any lines for a user or group other than root,
49
+ # are ignored. See subuid(5) and subgid(5) for details about these
50
+ # files, and the expected format of their entries.
51
+ def Capability.id_in_sub_id?(id, id_map)
52
+ id_map.any? do |line|
53
+ if line.match(/^(root|0):(\d+):(\d+)/)
54
+ range_min = $2.to_i
55
+ range_max = range_min + $3.to_i
56
+ id.between?(range_min, range_max)
57
+ end
58
+ end
59
+ end
41
60
  end
42
61
  end
@@ -71,6 +71,10 @@ module VagrantLXD
71
71
  error_key 'lxd_image_creation_failure'
72
72
  end
73
73
 
74
+ class ImageExportFailure < Vagrant::Errors::VagrantError
75
+ error_key 'lxd_image_export_failure'
76
+ end
77
+
74
78
  class ContainerNotFound < Vagrant::Errors::VagrantError
75
79
  error_key 'lxd_container_not_found'
76
80
  end
@@ -115,15 +119,6 @@ module VagrantLXD
115
119
  end
116
120
  end
117
121
 
118
- module Hyperkit::Client::Containers
119
- alias extract_container_options_without_devices extract_container_options
120
-
121
- def extract_container_options(name, options)
122
- opts = extract_container_options_without_devices(name, options)
123
- options.slice(:devices).merge(opts)
124
- end
125
- end
126
-
127
122
  NOT_CREATED = Vagrant::MachineState::NOT_CREATED_ID
128
123
 
129
124
  attr_reader :api_endpoint
@@ -169,8 +164,8 @@ module VagrantLXD
169
164
  raw_idmap = container[:config][:'raw.idmap']
170
165
  begin
171
166
  raw_idmap and
172
- raw_idmap =~ /^uid #{Process.uid} #{vagrant_uid}$/ and
173
- raw_idmap =~ /^gid #{Process.gid} #{vagrant_gid}$/
167
+ id_in_map?(Process.uid, 'uid', raw_idmap) and
168
+ id_in_map?(Process.gid, 'gid', raw_idmap)
174
169
  end
175
170
  rescue Vagrant::Errors::ProviderNotUsable
176
171
  false
@@ -343,6 +338,14 @@ module VagrantLXD
343
338
  end
344
339
  end
345
340
 
341
+ def package
342
+ if in_state? :stopped
343
+ create_package_directory
344
+ else
345
+ @logger.debug "Skipped packaging (#{machine_id} is not stopped)"
346
+ end
347
+ end
348
+
346
349
  def configure
347
350
  container = lxd.container(machine_id)
348
351
  container[:config] = container[:config].to_hash.merge(config)
@@ -391,7 +394,7 @@ module VagrantLXD
391
394
  end
392
395
  end
393
396
 
394
- private
397
+ private
395
398
 
396
399
  #
397
400
  # The remaining methods are just conveniences, not part of the API
@@ -538,11 +541,27 @@ module VagrantLXD
538
541
  config
539
542
  end
540
543
 
544
+ # Determines whether the numerical `id` of the specified `type` is
545
+ # included in the given idmap. These values should follow the format
546
+ # of the "raw.idmap" property specified here:
547
+ #
548
+ # https://lxd.readthedocs.io/en/latest/userns-idmap/#custom-idmaps
549
+ #
550
+ def id_in_map?(id, type, map)
551
+ range_types = ['both', type]
552
+ map.each_line.any? do |line|
553
+ range_type, range_values = line.split
554
+ range = range_values.split('-')
555
+ begin
556
+ range_types.include?(range_type) and
557
+ id.between?(range.first.to_i, range.last.to_i)
558
+ end
559
+ end
560
+ end
561
+
541
562
  def locate_or_generate_client_certificate
542
563
  vagrant_path = @machine.env.data_dir / 'lxd'
543
- default_path = Certificate.default_path / 'lxc'
544
-
545
- search_paths = [vagrant_path, default_path]
564
+ search_paths = [vagrant_path] + Certificate.default_paths
546
565
 
547
566
  Certificate.locate(search_paths) or
548
567
  Certificate.generate(vagrant_path)
@@ -602,6 +621,42 @@ module VagrantLXD
602
621
  FileUtils.rm_rf(tmpdir)
603
622
  end
604
623
 
624
+ # TODO s.a.
625
+ def create_package_directory
626
+ package_directory = Dir.mktmpdir
627
+
628
+ image = begin
629
+ lxd.create_image_from_container(machine_id, IMAGE_PROPERTIES)
630
+ rescue Hyperkit::BadRequest => e
631
+ if e.reason =~ /The image already exists: (\h{64})/
632
+ {
633
+ metadata: { fingerprint: $1 }
634
+ }
635
+ else
636
+ fail ImageExportFailure, machine_name: @machine.name, reason: e.reason
637
+ end
638
+ end
639
+
640
+ lxd.export_image(image[:metadata][:fingerprint], package_directory, filename: 'rootfs.tar.gz')
641
+
642
+ File.open(File.join(package_directory, 'metadata.json'), 'w') do |metadata|
643
+ metadata.puts JSON.pretty_generate({
644
+ 'provider' => 'lxc',
645
+ 'version' => '1.0.0',
646
+ 'built-on' => Time.now.strftime("%a %m %d %H:%M:%S %z %Y"),
647
+ })
648
+ end
649
+ rescue Exception => e
650
+ @machine.ui.error 'Failed to export container image'
651
+ @logger.error 'Error preparing container image: ' << e.message << "\n" << e.backtrace.join("\n")
652
+ fail ImageExportFailure, machine_name: @machine.name, reason: e.message
653
+ else
654
+ package_directory
655
+ ensure
656
+ # If the image was created just for this package, remove it.
657
+ lxd.delete_image(image[:metadata][:fingerprint]) rescue nil if image.is_a? Sawyer::Resource
658
+ end
659
+
605
660
  def error(klass)
606
661
  klass.new(
607
662
  provider: Version::NAME,
@@ -33,8 +33,11 @@ module VagrantLXD
33
33
 
34
34
  @logger = Log4r::Logger.new('vagrant::lxd::driver::certificate')
35
35
 
36
- def Certificate.default_path
37
- Pathname.new('~/.config').expand_path
36
+ def Certificate.default_paths
37
+ [
38
+ Pathname.new('~/.config/lxc').expand_path,
39
+ Pathname.new('~/snap/lxd/current/.config/lxc').expand_path,
40
+ ]
38
41
  end
39
42
 
40
43
  def Certificate.issuer_name
@@ -20,7 +20,7 @@
20
20
  module VagrantLXD
21
21
  module Version
22
22
  NAME = 'vagrant-lxd'
23
- VERSION = '0.4.2'
23
+ VERSION = '0.5.1'
24
24
  DESCRIPTION = 'Vagrant LXD provider'
25
25
  end
26
26
  end
@@ -134,6 +134,13 @@ en:
134
134
 
135
135
  https://gitlab.com/catalyst-it/vagrant-lxd/issues
136
136
 
137
+ lxd_image_export_failure: |-
138
+ The provider was unable to export a container image for '%{machine_name}'.
139
+
140
+ The underlying error message was: %{reason}
141
+
142
+ The LXD logs may contain more information about the cause of this failure.
143
+
137
144
  lxd_duplicate_attachment_failure: |-
138
145
  A machine can only be associated with one container at a time.
139
146
 
@@ -35,5 +35,10 @@ Gem::Specification.new do |spec|
35
35
  f.match(%r{^(test|spec|features)/})
36
36
  end
37
37
 
38
- spec.add_runtime_dependency 'hyperkit', '~> 1.2.0'
38
+ spec.add_runtime_dependency 'activesupport', '~> 5.2.3'
39
+ spec.add_runtime_dependency 'hyperkit', '~> 1.3.0'
40
+
41
+ # NOTE fixed to preserve ruby 1.x compatibility, versions after 1.0
42
+ # use the safe navigation operator and thus need ruby 2.3 or newer
43
+ spec.add_runtime_dependency 'faraday', '~> 0.17'
39
44
  end
metadata CHANGED
@@ -1,29 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-lxd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Hanson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-11 00:00:00.000000000 Z
11
+ date: 2020-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.2.3
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: hyperkit
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: 1.2.0
33
+ version: 1.3.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.17'
20
48
  type: :runtime
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
- version: 1.2.0
54
+ version: '0.17'
27
55
  description: A Vagrant plugin that allows management of containers using LXD.
28
56
  email:
29
57
  - evanh@catalyst.net.nz
@@ -71,8 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
99
  - !ruby/object:Gem::Version
72
100
  version: '0'
73
101
  requirements: []
74
- rubyforge_project:
75
- rubygems_version: 2.7.6
102
+ rubygems_version: 3.0.3
76
103
  signing_key:
77
104
  specification_version: 4
78
105
  summary: Vagrant LXD provider