kitchen-lxd 0.1.1 → 0.2.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 +4 -4
- data/CHANGELOG.md +11 -3
- data/README.md +49 -71
- data/lib/kitchen/driver/lxd.rb +27 -10
- data/lib/kitchen/driver/lxd/container.rb +60 -38
- data/lib/kitchen/driver/version.rb +7 -3
- data/lib/kitchen/transport/lxd.rb +50 -0
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bb8e8006b752908610c409c5d138e712fc11472c
|
|
4
|
+
data.tar.gz: a62b71d6d1504c16479809006124444918fb901e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f0e9d5a7a1fee40803833b21ddd7c4070abb9ad39fc3a152f3c834c94045e1e61f62c2ad0c3b1922877a05cf5028193dd466be668a010d73d82f7bf389a1d60b
|
|
7
|
+
data.tar.gz: d46312416e606f2ac76c0d57a2f49f2f5301d85a87cb5bb6307379e40868b1e664fb15dd737699fdab9bcc36ee605dba95292632c55a87b96a4453b4e5ddf8ea
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
## 0.
|
|
1
|
+
## 0.2.0 (2017-10-11)
|
|
2
|
+
|
|
3
|
+
- Add LXD transport.
|
|
4
|
+
- Remove ssh transport support.
|
|
5
|
+
- Allow specifying network bridge to attach to.
|
|
6
|
+
- Allow specifying path to lxc executable.
|
|
7
|
+
- Support downloading image from remote, if it's not available locally.
|
|
8
|
+
|
|
9
|
+
## 0.1.1 (2017-02-08)
|
|
2
10
|
|
|
3
11
|
- Support Lxd version 2.8.
|
|
4
12
|
|
|
5
|
-
## 0.1.0
|
|
13
|
+
## 0.1.0 (2017-02-07)
|
|
6
14
|
|
|
7
|
-
- Initial release
|
|
15
|
+
- Initial release.
|
data/README.md
CHANGED
|
@@ -1,21 +1,33 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Kitchen::Lxd
|
|
2
2
|
|
|
3
3
|
[](https://travis-ci.org/zeroturnaround/kitchen-lxd)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- [Requirements](#requirements)
|
|
6
|
+
- [Lxd](#lxd)
|
|
7
|
+
- [Installation and Setup](#installation-and-setup)
|
|
8
|
+
- [Configuration](#configuration)
|
|
9
|
+
- [Driver](#driver)
|
|
10
|
+
- [Transport](#transport)
|
|
11
|
+
- [Development](#development)
|
|
12
|
+
- [Authors](#authors)
|
|
13
|
+
- [License](#license)
|
|
6
14
|
|
|
7
|
-
|
|
15
|
+
A Test Kitchen Driver (with Transport) for Lxd.
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
8
18
|
|
|
9
19
|
### Lxd
|
|
10
20
|
|
|
11
|
-
Lxd version of 2.3 (the one where "lxc network" commands were introduced) or higher is required
|
|
12
|
-
this driver which means that a native package must be installed on the system running Test
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
Lxd version of 2.3 (the one where "lxc network" commands were introduced) or higher is required
|
|
22
|
+
for this driver which means that a native package must be installed on the system running Test
|
|
23
|
+
Kitchen.
|
|
24
|
+
|
|
25
|
+
You do not have to prepare any container image specifically, like downloading it or installing ssh
|
|
26
|
+
server. The driver will download container image automatically from the provided remote server,
|
|
27
|
+
if it's not available locally. Also you can use `lxd` transport instead of default `ssh`. Which
|
|
28
|
+
means files will be uploaded to container using `lxc file push` command.
|
|
17
29
|
|
|
18
|
-
##
|
|
30
|
+
## Installation and Setup
|
|
19
31
|
|
|
20
32
|
Install using command line:
|
|
21
33
|
|
|
@@ -23,74 +35,43 @@ Install using command line:
|
|
|
23
35
|
gem install kitchen-lxd
|
|
24
36
|
```
|
|
25
37
|
|
|
26
|
-
##
|
|
27
|
-
|
|
28
|
-
Available options:
|
|
29
|
-
|
|
30
|
-
- image
|
|
31
|
-
- container
|
|
32
|
-
- require_chef_omnibus
|
|
33
|
-
|
|
34
|
-
### image
|
|
38
|
+
## Configuration
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
Example config file may look like this:
|
|
37
41
|
|
|
38
42
|
```yaml
|
|
39
43
|
---
|
|
40
44
|
driver:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
```yaml
|
|
47
|
-
---
|
|
48
|
-
platforms:
|
|
49
|
-
- name: kitchen-xenial64
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
In this case: 'kitchen-xenial64', expecting to have an lxd image with this name locally.
|
|
53
|
-
|
|
54
|
-
### container
|
|
45
|
+
name: lxd
|
|
46
|
+
binary: lxc # this is default
|
|
47
|
+
remote: images # this is default
|
|
48
|
+
network: lxdbr0 # this is default
|
|
55
49
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
```yaml
|
|
59
|
-
---
|
|
60
|
-
driver:
|
|
61
|
-
container_name: my_name
|
|
50
|
+
transport:
|
|
51
|
+
name: lxd
|
|
62
52
|
```
|
|
63
53
|
|
|
64
|
-
|
|
54
|
+
Default values can be omitted, so the minimal config file looks like this:
|
|
65
55
|
|
|
66
56
|
```yaml
|
|
67
57
|
---
|
|
68
|
-
|
|
69
|
-
- name: kitchen-xenial64
|
|
58
|
+
driver: lxd
|
|
70
59
|
|
|
71
|
-
|
|
72
|
-
- name: webserver
|
|
60
|
+
transport: lxd
|
|
73
61
|
```
|
|
74
62
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
### <a name="config-require-chef-omnibus"></a> require\_chef\_omnibus
|
|
78
|
-
|
|
79
|
-
Determines whether or not a Chef [Omnibus package][chef_omnibus_dl] will be
|
|
80
|
-
installed. There are several different behaviors available:
|
|
63
|
+
### Driver
|
|
81
64
|
|
|
82
|
-
|
|
83
|
-
will skip re-installing if chef is present.
|
|
84
|
-
- `latest` - the latest release will be installed. Subsequent converges
|
|
85
|
-
will always re-install even if chef is present.
|
|
86
|
-
- `<VERSION_STRING>` (ex: `10.24.0`) - the desired version string will
|
|
87
|
-
be passed the the install.sh script. Subsequent converges will skip if
|
|
88
|
-
the installed version and the desired version match.
|
|
89
|
-
- `false` or `nil` - no chef is installed.
|
|
65
|
+
Available options:
|
|
90
66
|
|
|
91
|
-
|
|
67
|
+
Name | Description | Type | Default
|
|
68
|
+
-----|-------------|------|--------
|
|
69
|
+
binary | Path to lxc executable | String | `lxc`
|
|
70
|
+
remote | Remote LXD server to download image from, if it does not exist locally | String | `images`
|
|
71
|
+
network | Network bridge to attach to container | String | `lxdbr0`
|
|
72
|
+
wait_until_ready | Wait for the network to come up | Boolean | `true`
|
|
92
73
|
|
|
93
|
-
##
|
|
74
|
+
## Development
|
|
94
75
|
|
|
95
76
|
- Source hosted at [GitHub][repo]
|
|
96
77
|
- Report issues/questions/feature requests on [GitHub Issues][issues]
|
|
@@ -105,18 +86,15 @@ example:
|
|
|
105
86
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
106
87
|
5. Create new Pull Request
|
|
107
88
|
|
|
108
|
-
##
|
|
89
|
+
## Authors
|
|
109
90
|
|
|
110
|
-
Created and maintained by [
|
|
91
|
+
Created and maintained by [Juri Timošin][author].
|
|
111
92
|
|
|
112
|
-
##
|
|
93
|
+
## License
|
|
113
94
|
|
|
114
95
|
Apache 2.0 (see [LICENSE][license])
|
|
115
96
|
|
|
116
|
-
|
|
117
|
-
[
|
|
118
|
-
[
|
|
119
|
-
[
|
|
120
|
-
[repo]: https://github.com/zeroturnaround/kitchen-lxd
|
|
121
|
-
[driver_usage]: http://docs.kitchen-ci.org/drivers/usage
|
|
122
|
-
[chef_omnibus_dl]: http://www.chef.io/chef/install/
|
|
97
|
+
[author]: https://github.com/DracoAter
|
|
98
|
+
[issues]: https://github.com/DracoAter/kitchen-lxd/issues
|
|
99
|
+
[license]: https://github.com/DracoAter/kitchen-lxd/blob/master/LICENSE
|
|
100
|
+
[repo]: https://github.com/DracoAter/kitchen-lxd
|
data/lib/kitchen/driver/lxd.rb
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# you may not use this file except in compliance with the License.
|
|
9
9
|
# You may obtain a copy of the License at
|
|
10
10
|
#
|
|
11
|
-
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
12
|
#
|
|
13
13
|
# Unless required by applicable law or agreed to in writing, software
|
|
14
14
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
@@ -25,21 +25,31 @@ module Kitchen
|
|
|
25
25
|
#
|
|
26
26
|
# @author Juri Timošin <draco.ater@gmail.com>
|
|
27
27
|
class Lxd < Kitchen::Driver::Base
|
|
28
|
+
MIN_LXD_VERSION = '2.3'
|
|
29
|
+
|
|
28
30
|
kitchen_driver_api_version 2
|
|
29
31
|
|
|
30
|
-
default_config
|
|
31
|
-
default_config
|
|
32
|
+
default_config :binary, 'lxc'
|
|
33
|
+
default_config :remote, 'images'
|
|
34
|
+
default_config :network, 'lxdbr0'
|
|
35
|
+
default_config :wait_until_ready, true
|
|
36
|
+
default_config :fix_chef_install, false
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
default_config :image do |driver|
|
|
39
|
+
driver.instance.platform.name
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
default_config :container do |driver|
|
|
43
|
+
driver.instance.name
|
|
44
|
+
end
|
|
34
45
|
|
|
35
46
|
def create( state )
|
|
36
47
|
container.init
|
|
37
|
-
container.attach_network
|
|
48
|
+
container.attach_network config[:network] if config[:network]
|
|
38
49
|
container.start
|
|
39
|
-
container.prepare_ssh
|
|
40
50
|
|
|
41
|
-
state[:hostname] =
|
|
42
|
-
instance.
|
|
51
|
+
state[:hostname] = instance.transport.connection( state ).wait_until_ready if config[:wait_until_ready]
|
|
52
|
+
container.fix_chef_install( instance.platform.name ) if config[:fix_chef_install]
|
|
43
53
|
end
|
|
44
54
|
|
|
45
55
|
def destroy( state )
|
|
@@ -48,10 +58,17 @@ module Kitchen
|
|
|
48
58
|
container.destroy
|
|
49
59
|
end
|
|
50
60
|
|
|
51
|
-
|
|
61
|
+
def verify_dependencies
|
|
62
|
+
return
|
|
63
|
+
version = run_command( "#{config[:binary]} --version" ).strip
|
|
64
|
+
if Gem::Version.new( version ) < Gem::Version.new( MIN_LXD_VERSION )
|
|
65
|
+
raise UserError, "Detected old version of Lxd (#{version}), please upgrade to version "\
|
|
66
|
+
"#{MIN_LXD_VERSION} or higher."
|
|
67
|
+
end
|
|
68
|
+
end
|
|
52
69
|
|
|
53
70
|
def container
|
|
54
|
-
@container = Lxd::Container.new(
|
|
71
|
+
@container = Lxd::Container.new( logger, config ) if @container.nil?
|
|
55
72
|
@container
|
|
56
73
|
end
|
|
57
74
|
end
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# you may not use this file except in compliance with the License.
|
|
9
9
|
# You may obtain a copy of the License at
|
|
10
10
|
#
|
|
11
|
-
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
12
|
#
|
|
13
13
|
# Unless required by applicable law or agreed to in writing, software
|
|
14
14
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
@@ -29,77 +29,99 @@ module Kitchen
|
|
|
29
29
|
attr_reader :logger
|
|
30
30
|
attr_reader :state
|
|
31
31
|
|
|
32
|
-
def initialize(
|
|
33
|
-
@name = name
|
|
34
|
-
@image = image
|
|
32
|
+
def initialize( logger, opts )
|
|
35
33
|
@logger = logger
|
|
36
|
-
|
|
34
|
+
@name = opts[:container]
|
|
35
|
+
@image = opts[:image]
|
|
36
|
+
@remote = opts[:remote]
|
|
37
|
+
@binary = opts[:binary]
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
def init
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
41
|
+
return if created?
|
|
42
|
+
download_image unless image_exists?
|
|
43
|
+
run_command "#@binary init #@image #@name"
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def attach_network( network )
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
update_state
|
|
50
|
-
end
|
|
47
|
+
return if device_attached? network
|
|
48
|
+
run_command "#@binary network attach #{network} #@name"
|
|
51
49
|
end
|
|
52
50
|
|
|
53
51
|
def start
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
update_state
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def prepare_ssh
|
|
61
|
-
run_command "lxc exec #@name mkdir -- -p /root/.ssh"
|
|
62
|
-
run_command "lxc file push ~/.ssh/id_rsa.pub #@name/root/.ssh/authorized_keys"
|
|
63
|
-
run_command "lxc exec #@name chown -- root:root /root/.ssh/authorized_keys"
|
|
52
|
+
return if running?
|
|
53
|
+
run_command "#@binary start #@name"
|
|
64
54
|
end
|
|
65
55
|
|
|
66
56
|
def destroy
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
update_state
|
|
70
|
-
end
|
|
57
|
+
return unless created?
|
|
58
|
+
run_command "#@binary delete #@name --force"
|
|
71
59
|
end
|
|
72
60
|
|
|
73
|
-
def
|
|
61
|
+
def wait_until_ready
|
|
74
62
|
info 'Wait for network to become ready.'
|
|
75
63
|
9.times do
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
i['family'] == 'inet'
|
|
64
|
+
s = fetch_state[:state].nil? ? @state[:State] : @state[:state]
|
|
65
|
+
inet = s[:network][:eth0][:addresses].detect do |i|
|
|
66
|
+
i[:family] == 'inet'
|
|
80
67
|
end
|
|
81
|
-
return inet[
|
|
68
|
+
return inet[:address] if inet
|
|
82
69
|
sleep 1 unless defined?( Minitest )
|
|
83
70
|
end
|
|
84
71
|
nil
|
|
85
72
|
end
|
|
86
73
|
|
|
74
|
+
def download_image
|
|
75
|
+
run_command "#@binary image copy --copy-aliases #@remote:#@image local:"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def execute( command )
|
|
79
|
+
return if command.nil?
|
|
80
|
+
run_command "#@binary exec #@name -- #{command}"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def login_command
|
|
84
|
+
LoginCommand.new( "#@binary exec #@name -- bash", {} )
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def upload( locals, remote )
|
|
88
|
+
locals.each do |local|
|
|
89
|
+
run_command "#@binary file push -rp #{local} #@name/#{remote}"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def fix_chef_install( platform )
|
|
94
|
+
case platform
|
|
95
|
+
when /ubuntu/, /debian/
|
|
96
|
+
execute "apt install -y wget"
|
|
97
|
+
when /rhel/, /centos/
|
|
98
|
+
execute 'yum install -y sudo wget'
|
|
99
|
+
end
|
|
100
|
+
end
|
|
87
101
|
private
|
|
88
102
|
|
|
89
|
-
def
|
|
90
|
-
|
|
103
|
+
def image_exists?
|
|
104
|
+
!JSON.parse(
|
|
105
|
+
run_command( "#@binary image list #@image --format json" ), symbolize_names: true
|
|
106
|
+
).empty?
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def fetch_state
|
|
110
|
+
@state = JSON.parse(
|
|
111
|
+
run_command( "#@binary list #@name --format json" ), symbolize_names: true
|
|
112
|
+
).first
|
|
91
113
|
end
|
|
92
114
|
|
|
93
115
|
def running?
|
|
94
|
-
|
|
116
|
+
fetch_state[:status] == 'Running'
|
|
95
117
|
end
|
|
96
118
|
|
|
97
119
|
def created?
|
|
98
|
-
|
|
120
|
+
!fetch_state.nil?
|
|
99
121
|
end
|
|
100
122
|
|
|
101
123
|
def device_attached?( network )
|
|
102
|
-
|
|
124
|
+
fetch_state[:devices] and @state[:devices][network.to_sym]
|
|
103
125
|
end
|
|
104
126
|
end
|
|
105
127
|
end
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# you may not use this file except in compliance with the License.
|
|
9
9
|
# You may obtain a copy of the License at
|
|
10
10
|
#
|
|
11
|
-
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
12
|
#
|
|
13
13
|
# Unless required by applicable law or agreed to in writing, software
|
|
14
14
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
@@ -16,9 +16,13 @@
|
|
|
16
16
|
# See the License for the specific language governing permissions and
|
|
17
17
|
# limitations under the License.
|
|
18
18
|
|
|
19
|
+
require 'kitchen'
|
|
20
|
+
|
|
19
21
|
module Kitchen
|
|
20
22
|
module Driver
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
class Lxd < Kitchen::Driver::Base
|
|
24
|
+
# Version string for Lxd Kitchen driver
|
|
25
|
+
VERSION = '0.2.0'
|
|
26
|
+
end
|
|
23
27
|
end
|
|
24
28
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Juri Timošin (<draco.ater@gmail.com>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2017, Juri Timošin
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
|
|
19
|
+
require 'kitchen'
|
|
20
|
+
require 'forwardable'
|
|
21
|
+
|
|
22
|
+
module Kitchen
|
|
23
|
+
module Transport
|
|
24
|
+
# Transport for Lxd driver for Kitchen.
|
|
25
|
+
#
|
|
26
|
+
# @author Juri Timošin <draco.ater@gmail.com>
|
|
27
|
+
class Lxd < Base
|
|
28
|
+
kitchen_transport_api_version 2
|
|
29
|
+
|
|
30
|
+
default_config :container do |transport|
|
|
31
|
+
transport.instance.driver.container
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def connection( state, &block )
|
|
35
|
+
@connection = Connection.new( config.to_hash.merge( state ), &block )
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class Connection < Base::Connection
|
|
39
|
+
extend Forwardable
|
|
40
|
+
|
|
41
|
+
def initialize( opts )
|
|
42
|
+
@container = opts[:container]
|
|
43
|
+
super( opts )
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def_delegators :@container, :execute, :login_command, :upload, :wait_until_ready
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-lxd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Juri Timošin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-10-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: test-kitchen
|
|
@@ -97,7 +97,6 @@ dependencies:
|
|
|
97
97
|
description: Kitchen::Driver::Lxd - an Lxd driver for Test Kitchen.
|
|
98
98
|
email:
|
|
99
99
|
- draco.ater@gmail.com
|
|
100
|
-
- juri.timoshin@zeroturnaround.com
|
|
101
100
|
executables: []
|
|
102
101
|
extensions: []
|
|
103
102
|
extra_rdoc_files: []
|
|
@@ -108,7 +107,8 @@ files:
|
|
|
108
107
|
- lib/kitchen/driver/lxd.rb
|
|
109
108
|
- lib/kitchen/driver/lxd/container.rb
|
|
110
109
|
- lib/kitchen/driver/version.rb
|
|
111
|
-
|
|
110
|
+
- lib/kitchen/transport/lxd.rb
|
|
111
|
+
homepage: https://github.com/DracoAter/kitchen-lxd
|
|
112
112
|
licenses:
|
|
113
113
|
- Apache-2.0
|
|
114
114
|
metadata: {}
|
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
128
128
|
version: '0'
|
|
129
129
|
requirements: []
|
|
130
130
|
rubyforge_project:
|
|
131
|
-
rubygems_version: 2.5.
|
|
131
|
+
rubygems_version: 2.5.2
|
|
132
132
|
signing_key:
|
|
133
133
|
specification_version: 4
|
|
134
134
|
summary: An Lxd driver for Test Kitchen.
|