kitchen-joyent 0.1.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 +15 -0
- data/.gitignore +20 -0
- data/.rubocop.yml +17 -0
- data/.travis.yml +10 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +15 -0
- data/README.md +218 -0
- data/Rakefile +26 -0
- data/kitchen-joyent.gemspec +29 -0
- data/lib/kitchen/driver/joyent.rb +101 -0
- data/lib/kitchen/driver/joyent_version.rb +25 -0
- data/scripts/install-smartos.sh +4 -0
- data/spec/kitchen/driver/joyent_spec.rb +247 -0
- data/spec/spec_helper.rb +26 -0
- metadata +158 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
ZjUwMmFiODljMGU4YmQ5OTJmMWI1NGJmNDUwZWVkZjI5MTdkYTg4OA==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
Y2UwYTU0MmNkZTJkNzZlZGUwMGJhMzFiNWYyYTgzZTJmMTAxMjZkYQ==
|
|
7
|
+
SHA512:
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
MDdkOWVjZjRhYjNmYTVhY2M1ZGU3NmY2MzA5MTA5Y2FjZTY2NzljYmM1Nzgw
|
|
10
|
+
MTIwZTJiNDNhMWEzODNkNmMwZGZhODNiYzBjM2I1MTNmZDYxODRlOTYzMzlh
|
|
11
|
+
MWQzZmVmMTkyYWFjOGYxMTUwZTNmZGFkMzE3YTI4ZjUyMzVmMzM=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
MDYyMjMzZGY1NTYwNGM0MjE0MTNjMzc4MDBjZGJjZjI0YjQ1YjI0MDBkZWRh
|
|
14
|
+
ZGNlYjlmNDUyYjk0ZTllYjVmYjlkNDk1OWYyYmQ1ZGRjNjA1MzUwOTVhNWJj
|
|
15
|
+
MzNhM2E5N2IyMWUzNGEzN2Q0YThmNjc3NmNiOGIyNzJmZGVhNzQ=
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Author:: Sean OMeara (<someara@gmail.com>)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2013 Sean OMeara
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
data/README.md
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Kitchen::Joyent
|
|
2
|
+
|
|
3
|
+
A Joyent API driver for Test Kitchen 1.0!
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Add this line to your application's Gemfile:
|
|
8
|
+
|
|
9
|
+
gem 'kitchen-joyent'
|
|
10
|
+
|
|
11
|
+
And then execute:
|
|
12
|
+
|
|
13
|
+
$ bundle
|
|
14
|
+
|
|
15
|
+
Or install it yourself as:
|
|
16
|
+
|
|
17
|
+
$ gem install kitchen-joyent
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Provide, at a minimum, the required driver options in your `.kitchen.yml` file:
|
|
22
|
+
|
|
23
|
+
driver_plugin: joyent
|
|
24
|
+
driver_config:
|
|
25
|
+
joyent_username: <%= ENV['SDC_CLI_ACCOUNT'] %>
|
|
26
|
+
joyent_keyfile: <%= ENV['SDC_CLI_IDENTITY'] %>
|
|
27
|
+
joyent_keyname: <%= ENV['SDC_CLI_KEY_ID'] %>
|
|
28
|
+
joyent_url: <%= ENV['SDC_CLI_URL'] %>
|
|
29
|
+
require_chef_omnibus: latest (if you'll be using Chef)
|
|
30
|
+
|
|
31
|
+
Until we get SmartOS, OmniOS, and FreeBSD into Omnitruck, you'll need
|
|
32
|
+
to override the Chef bootstrap script.
|
|
33
|
+
chef_omnibus_url: http://path.to.an.script.sh
|
|
34
|
+
|
|
35
|
+
# Example .kitchen.yml
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
---
|
|
39
|
+
driver_plugin: joyent
|
|
40
|
+
driver_config:
|
|
41
|
+
joyent_username: <%= ENV['SDC_CLI_ACCOUNT'] %>
|
|
42
|
+
joyent_keyfile: <%= ENV['SDC_CLI_IDENTITY'] %>
|
|
43
|
+
joyent_keyname: <%= ENV['SDC_CLI_KEY_ID'] %>
|
|
44
|
+
joyent_url: <%= ENV['SDC_CLI_URL'] %>
|
|
45
|
+
require_chef_omnibus: true
|
|
46
|
+
chef_omnibus_url:
|
|
47
|
+
http://raw.github.com/someara/kitchen-joyent/master/scripts/install-smartos.sh
|
|
48
|
+
sudo: false
|
|
49
|
+
|
|
50
|
+
platforms:
|
|
51
|
+
- name: smartos-1330
|
|
52
|
+
driver_config:
|
|
53
|
+
joyent_image_id: 87b9f4ac-5385-11e3-a304-fb868b82fe10
|
|
54
|
+
joyent_flavor_id: g3-standard-4-smartos
|
|
55
|
+
|
|
56
|
+
- name: freebsd-9
|
|
57
|
+
driver_config:
|
|
58
|
+
joyent_image_id: df8d2ee6-d87f-11e2-b257-2f02c6f6ce80
|
|
59
|
+
joyent_flavor_id: g3-standard-4-kvm
|
|
60
|
+
|
|
61
|
+
- name: centos-6
|
|
62
|
+
driver_config:
|
|
63
|
+
joyent_image_id: 325dbc5e-2b90-11e3-8a3e-bfdcb1582a8d
|
|
64
|
+
joyent_flavor_id: g3-standard-4-kvm
|
|
65
|
+
|
|
66
|
+
suites:
|
|
67
|
+
- name: default
|
|
68
|
+
run_list: ["recipe[unix-tester]"]
|
|
69
|
+
attributes: {}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### List of Images
|
|
73
|
+
```
|
|
74
|
+
$ knife joyent image list
|
|
75
|
+
ID Name Version OS
|
|
76
|
+
Type
|
|
77
|
+
f669428c-a939-11e2-a485-b790efc0f0c1 base 13.1.0 smartos smartmachine
|
|
78
|
+
e3364212-05c0-11e3-9576-3f3ee9e951a7 base 13.2.0 smartos smartmachine
|
|
79
|
+
60ed3a3e-92c7-11e2-ba4a-9b6d5feaa0c4 base 1.9.1 smartos smartmachine
|
|
80
|
+
b83f8276-1fdd-11e3-989b-4bddb088a8a0 base 13.2.1 smartos smartmachine
|
|
81
|
+
84cb7edc-3f22-11e2-8a2a-3f2a7b148699 base 1.8.4 smartos smartmachine
|
|
82
|
+
753ceee6-5372-11e3-8f4e-f79c1154e596 base 13.3.0 smartos smartmachine
|
|
83
|
+
55330ab4-066f-11e2-bd0f-434f2462fada base 1.8.1 smartos smartmachine
|
|
84
|
+
60a3b1fa-0674-11e2-abf5-cb82934a8e24 base64 1.8.1 smartos smartmachine
|
|
85
|
+
87b9f4ac-5385-11e3-a304-fb868b82fe10 base64 13.3.0 smartos smartmachine
|
|
86
|
+
0084dad6-05c1-11e3-9476-8f8320925eea base64 13.2.0 smartos smartmachine
|
|
87
|
+
fdea06b0-3f24-11e2-ac50-0b645575ce9d base64 1.8.4 smartos smartmachine
|
|
88
|
+
17c98640-1fdb-11e3-bf51-3708ce78e75a base64 13.2.1 smartos smartmachine
|
|
89
|
+
cf7e2f40-9276-11e2-af9a-0bad2233fb0b base64 1.9.1 smartos smartmachine
|
|
90
|
+
9eac5c0c-a941-11e2-a7dc-57a6b041988f base64 13.1.0 smartos smartmachine
|
|
91
|
+
bae3f528-e01f-11e2-b2cb-1360087a7d5f cassandra 13.1.0 smartos smartmachine
|
|
92
|
+
2539f6de-0b5a-11e2-b647-fb08c3503fb2 centos-5.7 1.3.0 linux virtualmachine
|
|
93
|
+
e4cd7b9e-4330-11e1-81cf-3bb50a972bda centos-6 1.0.1 linux virtualmachine
|
|
94
|
+
30e9e4c8-bbf2-11e2-ac3b-3b598ee13393 centos-6 2.4.2 linux virtualmachine
|
|
95
|
+
8700b668-0da4-11e2-bde4-17221283a2f4 centos-6 1.3.0 linux virtualmachine
|
|
96
|
+
325dbc5e-2b90-11e3-8a3e-bfdcb1582a8d centos-6 2.5.0 linux virtualmachine
|
|
97
|
+
87c556ac-ab9d-11e2-914d-07682fcab47d centos-6 2.4.1 linux virtualmachine
|
|
98
|
+
46ecf60e-52c8-11e2-b212-9b51fc749547 debian-6.0.6 2.3.1 linux virtualmachine
|
|
99
|
+
94384a12-bbeb-11e2-aec2-2bfa9742484b debian-6.0.7 2.4.2 linux virtualmachine
|
|
100
|
+
014e2254-a853-11e2-81c9-b318c31fa17a debian-6.0.7 2.4.1 linux virtualmachine
|
|
101
|
+
e6ac6784-44b3-11e1-8555-87c3dd87aafe debian-6.03 1.0.0 linux virtualmachine
|
|
102
|
+
e42f8c84-bbea-11e2-b920-078fab2aab1f fedora 2.4.2 linux virtualmachine
|
|
103
|
+
df8d2ee6-d87f-11e2-b257-2f02c6f6ce80 freebsd 1.0.0 bsd virtualmachine
|
|
104
|
+
274bc2bc-d919-11e2-b797-83245409fbeb hadoop 13.1.0 smartos smartmachine
|
|
105
|
+
48489174-e351-11e2-88c0-a31eb2b342ee java 13.1.0 smartos smartmachine
|
|
106
|
+
2c6b0348-d8f6-11e2-91f4-ef498b553611 manta-build 13.1.0 smartos smartmachine
|
|
107
|
+
d2409672-29f3-11e3-ba86-6f782523cb41 mongodb 13.2.1 smartos smartmachine
|
|
108
|
+
ec5defa8-16fe-11e3-948e-8f59b3488902 mongodb 13.2.0 smartos smartmachine
|
|
109
|
+
f953e97e-4991-11e1-9ea4-27c6e7e8afda nodejs 1.3.3 smartos smartmachine
|
|
110
|
+
133263be-3c2c-11e3-8d3a-a30c43ae58fd nodejs 13.2.2 smartos smartmachine
|
|
111
|
+
1fc068b0-13b0-11e2-9f4e-2f3f6a96d9bc nodejs 1.4.0 smartos smartmachine
|
|
112
|
+
beb2dbd4-b26f-11e2-8ad4-935c80092aa6 nodejs 13.1.0 smartos smartmachine
|
|
113
|
+
ffed3d9e-2c2f-11e3-9a12-bf5267821b0b nodejs 13.2.1 smartos smartmachine
|
|
114
|
+
dc1a8b5e-043c-11e2-9d94-0f3fcb2b0c6d percona 1.6.0 smartos smartmachine
|
|
115
|
+
3882b5da-b0e8-11e2-b3a9-dbcf26c3e051 percona 13.1.0 smartos smartmachine
|
|
116
|
+
fb6e7820-60ee-11e3-93b6-7f34ea3f2616 percona 13.3.0 smartos smartmachine
|
|
117
|
+
1567edb0-b33e-11e2-a0d2-bf73e2825ffe riak 13.1.0 smartos smartmachine
|
|
118
|
+
01b2c898-945f-11e1-a523-af1afbe22822 smartos 1.6.3 smartos smartmachine
|
|
119
|
+
489754f2-5e01-11e1-8ff8-f770c2116b0d smartos 1.5.4 smartos smartmachine
|
|
120
|
+
f9e4be48-9466-11e1-bc41-9f993f5dff36 smartos64 1.6.3 smartos smartmachine
|
|
121
|
+
31bc4dbe-5e06-11e1-907c-5bed6b255fd1 smartos64 1.5.4 smartos smartmachine
|
|
122
|
+
56a0655c-3cc6-11e3-9c79-5701599fdf05 standard 13.2.3 smartos smartmachine
|
|
123
|
+
dac2ad6e-2aa5-11e3-885f-8fd408fc6a82 standard 13.2.1 smartos smartmachine
|
|
124
|
+
34509f68-1ae7-11e3-b816-d3edf71c7840 standard 13.2.0 smartos smartmachine
|
|
125
|
+
3390ca7c-f2e7-11e1-8818-c36e0b12e58b standard 1.0.7 smartos smartmachine
|
|
126
|
+
399775e4-163e-11e3-8d42-7b14b732ae17 standard64 13.2.0 smartos smartmachine
|
|
127
|
+
a0f8cf30-f2ea-11e1-8a51-5793736be67c standard64 1.0.7 smartos smartmachine
|
|
128
|
+
b779b49a-29e4-11e3-9b1d-0b0b41ccdcad standard64 13.2.1 smartos smartmachine
|
|
129
|
+
610e04c4-3cc4-11e3-9867-df64b21b66fe standard64 13.2.3 smartos smartmachine
|
|
130
|
+
3cd9ef64-1fa5-11e3-be45-1fa28ec74f4a stm-1000H 13.2.0 smartos smartmachine
|
|
131
|
+
efe2c3e8-1fb8-11e3-b4c4-eb64d18f0b71 stm-1000M 13.2.0 smartos smartmachine
|
|
132
|
+
6e99eff4-1fb9-11e3-9d00-3b6b25be1e62 stm-1000M-SAF 13.2.0 smartos smartmachine
|
|
133
|
+
ef905526-1fb9-11e3-a095-576400e02b54 stm-2000L 13.2.0 smartos smartmachine
|
|
134
|
+
6bf3c40e-1fba-11e3-9847-4f44ccd9abe9 stm-2000L-SAF 13.2.0 smartos smartmachine
|
|
135
|
+
0bcda78c-2066-11e3-8f62-d7edf9742dbd stm-2000L-SAF-STX 13.2.0 smartos smartmachine
|
|
136
|
+
36f3b80c-2066-11e3-9215-5ffe647b58f0 stm-2000L-STX 13.2.0 smartos smartmachine
|
|
137
|
+
08c63ac6-2067-11e3-abea-a7c7c71e8f15 stm-2000M-SAF-STX 13.2.0 smartos smartmachine
|
|
138
|
+
8b503466-2066-11e3-b5c8-c7e50b85619c stm-2000M-STX 13.2.0 smartos smartmachine
|
|
139
|
+
e96103b6-1fba-11e3-8dba-3b2f9d336fa1 stm-4000L 13.2.0 smartos smartmachine
|
|
140
|
+
67e5fc46-1fbb-11e3-b1c7-274da29ae2f6 stm-500L-10 13.2.0 smartos smartmachine
|
|
141
|
+
e4093946-1fbb-11e3-8b61-bb9e496e0da4 stm-500M-200 13.2.0 smartos smartmachine
|
|
142
|
+
4b4c141e-1fb4-11e3-a10e-6f99cfdf8806 stm-developer 13.2.0 smartos smartmachine
|
|
143
|
+
71101322-43a5-11e1-8f01-cf2a3031a7f4 ubuntu-10.04 1.0.1 linux virtualmachine
|
|
144
|
+
3162a91e-8b5d-11e2-a78f-9780813f9142 ubuntu-12.04 2.4.0 linux virtualmachine
|
|
145
|
+
da144ada-a558-11e2-8762-538b60994628 ubuntu-12.04 2.4.1 linux virtualmachine
|
|
146
|
+
64e1b2ee-52c8-11e2-bedd-7f919cc63ab9 ubuntu-12.04 2.3.1 linux virtualmachine
|
|
147
|
+
d2ba0f30-bbe8-11e2-a9a2-6bc116856d85 ubuntu-12.04 2.4.2a linux virtualmachine
|
|
148
|
+
13328c9a-9173-11e2-a9a5-2ff43d306c21 ws2008ent-r2-sp1 2.0.2 windows virtualmachine
|
|
149
|
+
5f101d16-90ac-11e2-b9c2-877979ff6041 ws2008std-r2-sp1 2.0.2 windows virtualmachine
|
|
150
|
+
95f6c9a6-a2bd-11e2-b753-dbf2651bf890 ws2012std 1.0.1 windows virtualmachine
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### List of Flavors (Sizes)
|
|
154
|
+
```
|
|
155
|
+
$ knife joyent flavor list
|
|
156
|
+
Name RAM Disk Swap Price $/Hr
|
|
157
|
+
g3-standard-0.25-kvm 0.25 GB 16 GB 0 GB
|
|
158
|
+
g3-standard-0.25-smartos 0.25 GB 16 GB 0 GB
|
|
159
|
+
g3-standard-0.5-smartos 0.50 GB 16 GB 1 GB
|
|
160
|
+
Extra Small 512 MB 0.50 GB 15 GB 1 GB
|
|
161
|
+
g3-standard-0.5-kvm 0.50 GB 16 GB 1 GB
|
|
162
|
+
g3-standard-0.625-kvm 0.62 GB 20 GB 1 GB $0.020
|
|
163
|
+
g3-standard-0.625-smartos 0.62 GB 20 GB 1 GB $0.020
|
|
164
|
+
g3-standard-1-kvm 1.00 GB 33 GB 2 GB
|
|
165
|
+
g3-standard-1-smartos 1.00 GB 33 GB 2 GB
|
|
166
|
+
Small 1GB 1.00 GB 30 GB 2 GB
|
|
167
|
+
g3-standard-1.75-kvm 1.75 GB 56 GB 4 GB $0.056
|
|
168
|
+
g3-standard-1.75-smartos 1.75 GB 56 GB 4 GB $0.056
|
|
169
|
+
g3-highcpu-1.75-smartos 1.75 GB 75 GB 4 GB $0.127
|
|
170
|
+
g3-highcpu-1.75-kvm 1.75 GB 75 GB 4 GB $0.127
|
|
171
|
+
g3-standard-2-kvm 2.00 GB 66 GB 4 GB
|
|
172
|
+
g3-standard-2-smartos 2.00 GB 66 GB 4 GB
|
|
173
|
+
Medium 2GB 2.00 GB 60 GB 4 GB
|
|
174
|
+
g3-standard-3.75-kvm 3.75 GB 123 GB 8 GB $0.120
|
|
175
|
+
g3-standard-3.75-smartos 3.75 GB 123 GB 8 GB $0.120
|
|
176
|
+
g3-standard-4-kvm 4.00 GB 131 GB 8 GB
|
|
177
|
+
g3-highcpu-4-kvm 4.00 GB 150 GB 8 GB
|
|
178
|
+
g3-standard-4-smartos 4.00 GB 131 GB 8 GB
|
|
179
|
+
Medium 4GB 4.00 GB 120 GB 8 GB
|
|
180
|
+
g3-highcpu-4-smartos 4.00 GB 150 GB 8 GB
|
|
181
|
+
g3-highcpu-7-kvm 7.00 GB 263 GB 14 GB $0.508
|
|
182
|
+
g3-highcpu-7-smartos 7.00 GB 263 GB 14 GB $0.508
|
|
183
|
+
g3-standard-7.5-smartos 7.50 GB 738 GB 15 GB $0.240
|
|
184
|
+
g3-standard-7.5-kvm 7.50 GB 738 GB 15 GB $0.240
|
|
185
|
+
g3-highcpu-8-smartos 8.00 GB 300 GB 14 GB
|
|
186
|
+
g3-standard-8-kvm 8.00 GB 789 GB 16 GB
|
|
187
|
+
Large 8GB 8.00 GB 240 GB 16 GB
|
|
188
|
+
g3-standard-8-smartos 8.00 GB 789 GB 16 GB
|
|
189
|
+
g3-highcpu-8-kvm 8.00 GB 300 GB 14 GB
|
|
190
|
+
g3-standard-15-smartos 15.00 GB 1467 GB 30 GB $0.480
|
|
191
|
+
g3-standard-15-kvm 15.00 GB 1467 GB 30 GB $0.480
|
|
192
|
+
Large 16GB 16.00 GB 480 GB 32 GB
|
|
193
|
+
g3-highcpu-16-smartos 16.00 GB 600 GB 32 GB $1.160
|
|
194
|
+
g3-highmemory-17.125-smartos 17.12 GB 420 GB 34 GB $0.409
|
|
195
|
+
g3-highmemory-17.125-kvm 17.12 GB 420 GB 34 GB $0.409
|
|
196
|
+
g3-highcpu-24-smartos 24.00 GB 900 GB 48 GB $1.739
|
|
197
|
+
g3-standard-30-smartos 30.00 GB 1683 GB 60 GB $0.960
|
|
198
|
+
g3-standard-30-kvm 30.00 GB 1683 GB 60 GB $0.960
|
|
199
|
+
XL 32GB 32.00 GB 760 GB 64 GB
|
|
200
|
+
g3-standard-32-smartos 32.00 GB 1683 GB 64 GB
|
|
201
|
+
g3-highmemory-34.25-kvm 34.25 GB 843 GB 68 GB $0.817
|
|
202
|
+
g3-highmemory-34.25-smartos 34.25 GB 843 GB 68 GB $0.817
|
|
203
|
+
g3-standard-48-smartos 48.00 GB 1683 GB 96 GB $1.536
|
|
204
|
+
XXL 48GB 48.00 GB 1024 GB 96 GB
|
|
205
|
+
g3-standard-64-smartos 64.00 GB 2100 GB 128 GB $2.048
|
|
206
|
+
XXXL 64GB 64.00 GB 1536 GB 128 GB
|
|
207
|
+
g3-highmemory-68.375-smartos 68.38 GB 1122 GB 137 GB $1.630
|
|
208
|
+
g3-highmemory-68.375-kvm 68.38 GB 1122 GB 137 GB $1.630
|
|
209
|
+
g3-standard-80-smartos 80.00 GB 2625 GB 160 GB $2.560
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Contributing
|
|
213
|
+
|
|
214
|
+
1. Fork it
|
|
215
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
216
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
217
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
218
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rubocop/rake_task'
|
|
3
|
+
require 'cane/rake_task'
|
|
4
|
+
require 'rspec/core/rake_task'
|
|
5
|
+
|
|
6
|
+
desc 'Run Cane to check quality metrics'
|
|
7
|
+
Cane::RakeTask.new
|
|
8
|
+
|
|
9
|
+
desc 'Run RuboCop on the lib directory'
|
|
10
|
+
Rubocop::RakeTask.new(:rubocop) do |task|
|
|
11
|
+
task.patterns = ['lib/**/*.rb']
|
|
12
|
+
# don't abort rake on failure
|
|
13
|
+
task.fail_on_error = false
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
desc 'Display LOC stats'
|
|
17
|
+
task :loc do
|
|
18
|
+
puts "\n## LOC Stats"
|
|
19
|
+
sh 'countloc -r lib/kitchen'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
desc 'Run RSpec unit tests'
|
|
23
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
24
|
+
|
|
25
|
+
task :default => [:cane, :rubocop, :loc, :spec]
|
|
26
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'kitchen/driver/joyent_version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = 'kitchen-joyent'
|
|
8
|
+
spec.version = Kitchen::Driver::JOYENT_VERSION
|
|
9
|
+
spec.authors = ['Sean OMeara']
|
|
10
|
+
spec.email = ['someara@gmail.com']
|
|
11
|
+
spec.description = %q{A Test Kitchen Joyent driver}
|
|
12
|
+
spec.summary = spec.description
|
|
13
|
+
spec.homepage = 'https://github.com/someara/kitchen-joyent'
|
|
14
|
+
spec.license = 'Apache 2.0'
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files`.split($/)
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ['lib']
|
|
20
|
+
|
|
21
|
+
spec.add_dependency 'test-kitchen', '~> 1.0'
|
|
22
|
+
spec.add_dependency 'fog'
|
|
23
|
+
|
|
24
|
+
spec.add_development_dependency 'rubocop'
|
|
25
|
+
spec.add_development_dependency 'rake'
|
|
26
|
+
spec.add_development_dependency 'cane'
|
|
27
|
+
spec.add_development_dependency 'countloc'
|
|
28
|
+
spec.add_development_dependency 'rspec'
|
|
29
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# Author:: Sean OMeara (<someara@gmail.com>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2013, Sean OMeara
|
|
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 'benchmark'
|
|
20
|
+
require 'fog'
|
|
21
|
+
require 'kitchen'
|
|
22
|
+
require 'etc'
|
|
23
|
+
require 'socket'
|
|
24
|
+
|
|
25
|
+
module Kitchen
|
|
26
|
+
module Driver
|
|
27
|
+
# Joyent driver for Kitchen.
|
|
28
|
+
#
|
|
29
|
+
# @author Sean OMerara <someara@gmail.com>
|
|
30
|
+
class Joyent < Kitchen::Driver::SSHBase
|
|
31
|
+
default_config :joyent_url, 'https://us-sw-1.api.joyentcloud.com'
|
|
32
|
+
default_config :joyent_image_id, '87b9f4ac-5385-11e3-a304-fb868b82fe10'
|
|
33
|
+
default_config :joyent_flavor_id, 'g3-standard-4-smartos'
|
|
34
|
+
default_config :username, 'root'
|
|
35
|
+
default_config :port, '22'
|
|
36
|
+
default_config :sudo, false
|
|
37
|
+
|
|
38
|
+
def create(state)
|
|
39
|
+
server = create_server
|
|
40
|
+
state[:server_id] = server.id
|
|
41
|
+
info("Joyent <#{state[:server_id]}> created.")
|
|
42
|
+
server.wait_for { print '.'; ready? }
|
|
43
|
+
|
|
44
|
+
print '(server ready)'
|
|
45
|
+
state[:hostname] = server.public_ip_address
|
|
46
|
+
wait_for_sshd(state[:hostname])
|
|
47
|
+
print "(ssh ready)\n"
|
|
48
|
+
debug("joyent:create #{state[:hostname]}")
|
|
49
|
+
rescue Fog::Errors::Error, Excon::Errors::Error => ex
|
|
50
|
+
raise ActionFailed, ex.message
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def destroy(state)
|
|
54
|
+
return if state[:server_id].nil?
|
|
55
|
+
|
|
56
|
+
server = compute.servers.get(state[:server_id])
|
|
57
|
+
server.destroy unless server.nil?
|
|
58
|
+
info("Joyent instance <#{state[:server_id]}> destroyed.")
|
|
59
|
+
state.delete(:server_id)
|
|
60
|
+
state.delete(:hostname)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def compute
|
|
66
|
+
debug_compute_config
|
|
67
|
+
|
|
68
|
+
server_def = {
|
|
69
|
+
provider: :joyent,
|
|
70
|
+
joyent_username: config[:joyent_username],
|
|
71
|
+
joyent_keyname: config[:joyent_keyname],
|
|
72
|
+
joyent_keyfile: config[:joyent_keyfile],
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
Fog::Compute.new(server_def)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def create_server
|
|
79
|
+
debug_server_config
|
|
80
|
+
|
|
81
|
+
compute.servers.create(
|
|
82
|
+
joyent_url: config[:joyent_url],
|
|
83
|
+
dataset: config[:joyent_image_id],
|
|
84
|
+
package: config[:joyent_flavor_id],
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def debug_server_config
|
|
89
|
+
debug("joyent: joyent_url #{config[:joyent_url]}")
|
|
90
|
+
debug("joyent: image_id #{config[:joyent_image_id]}")
|
|
91
|
+
debug("joyent: flavor_id #{config[:joyent_flavor_id]}")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def debug_compute_config
|
|
95
|
+
debug("joyent_username #{config[:joyent_username]}")
|
|
96
|
+
debug("joyent_keyname #{config[:joyent_keyname]}")
|
|
97
|
+
debug("joyent_keyfile #{config[:joyent_keyfile]}")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Sean Omeara (<someara@gmail.com>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2013, Greg Fitzgerald
|
|
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
|
+
module Kitchen
|
|
20
|
+
# Kitchen
|
|
21
|
+
module Driver
|
|
22
|
+
# Version string for Joyent Kitchen provider
|
|
23
|
+
JOYENT_VERSION = '0.1.0'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Sean OMeara (<someara@gmail.com>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2013, Sean OMeara
|
|
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 'logger'
|
|
20
|
+
require 'stringio'
|
|
21
|
+
require 'rspec'
|
|
22
|
+
require 'kitchen'
|
|
23
|
+
require_relative '../../spec_helper'
|
|
24
|
+
|
|
25
|
+
describe Kitchen::Driver::Joyent do
|
|
26
|
+
let(:logged_output) { StringIO.new }
|
|
27
|
+
let(:logger) { Logger.new(logged_output) }
|
|
28
|
+
let(:config) { Hash.new }
|
|
29
|
+
let(:state) { Hash.new }
|
|
30
|
+
|
|
31
|
+
let(:instance) do
|
|
32
|
+
double(name: 'honeybadger', logger: logger, to_str: 'instance')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
let(:driver) do
|
|
36
|
+
d = Kitchen::Driver::Joyent.new(config)
|
|
37
|
+
d.instance = instance
|
|
38
|
+
d
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe '#initialize'do
|
|
42
|
+
context 'default options' do
|
|
43
|
+
|
|
44
|
+
it 'defaults to us-sw-1' do
|
|
45
|
+
expect(driver[:joyent_url]).to eq('https://us-sw-1.api.joyentcloud.com')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'defaults to a base64 13.3.0' do
|
|
49
|
+
expect(driver[:joyent_image_id]).to eq('87b9f4ac-5385-11e3-a304-fb868b82fe10')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it 'defaults to joyent_flavor_id g3-standard-4-smartos' do
|
|
53
|
+
expect(driver[:joyent_flavor_id]).to eq('g3-standard-4-smartos')
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'defaults to SSH with root user on port 22' do
|
|
57
|
+
expect(driver[:username]).to eq('root')
|
|
58
|
+
expect(driver[:port]).to eq('22')
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'does not use sudo' do
|
|
62
|
+
expect(driver[:sudo]).to eq(false)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context 'overridden options' do
|
|
68
|
+
let(:config) do
|
|
69
|
+
{
|
|
70
|
+
joyent_url: 'https://internal.sdc.installation.biz',
|
|
71
|
+
joyent_image_id: 'df8d2ee6-d87f-11e2-b257-2f02c6f6ce80',
|
|
72
|
+
joyent_flavor_id: 'g3-standard-4-kvm',
|
|
73
|
+
username: 'r00t',
|
|
74
|
+
port: '2222'
|
|
75
|
+
}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'uses all the overridden options' do
|
|
79
|
+
drv = driver
|
|
80
|
+
config.each do |k, v|
|
|
81
|
+
expect(drv[k]).to eq(v)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe '#create' do
|
|
88
|
+
let(:server) do
|
|
89
|
+
double(
|
|
90
|
+
'id' => 'test123', 'wait_for' => true,
|
|
91
|
+
'public_ip_address' => '1.2.3.4'
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
let(:driver) do
|
|
95
|
+
d = Kitchen::Driver::Joyent.new(config)
|
|
96
|
+
d.instance = instance
|
|
97
|
+
d.stub(:create_server).and_return(server)
|
|
98
|
+
d.stub(:wait_for_sshd).with('1.2.3.4').and_return(true)
|
|
99
|
+
d
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
context 'when only supplying username, keyname, and keyfile' do
|
|
103
|
+
let(:config) do
|
|
104
|
+
{
|
|
105
|
+
joyent_username: 'robocop',
|
|
106
|
+
joyent_keyname: 'pewpewpew',
|
|
107
|
+
joyent_keyfile: '/path/to/key'
|
|
108
|
+
}
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it 'gets a proper server ID' do
|
|
112
|
+
driver.create(state)
|
|
113
|
+
expect(state[:server_id]).to eq('test123')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it 'gets a proper hostname (IP)' do
|
|
117
|
+
driver.create(state)
|
|
118
|
+
expect(state[:hostname]).to eq('1.2.3.4')
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
describe '#destroy' do
|
|
124
|
+
let(:server_id) { '12345' }
|
|
125
|
+
let(:hostname) { 'example.com' }
|
|
126
|
+
let(:state) { { server_id: server_id, hostname: hostname } }
|
|
127
|
+
let(:server) { double(nil?: false, destroy: true) }
|
|
128
|
+
let(:servers) { double(get: server) }
|
|
129
|
+
let(:compute) { double(servers: servers) }
|
|
130
|
+
|
|
131
|
+
let(:driver) do
|
|
132
|
+
d = Kitchen::Driver::Joyent.new(config)
|
|
133
|
+
d.instance = instance
|
|
134
|
+
d.stub(:compute).and_return(compute)
|
|
135
|
+
d
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
context 'a live server that needs to be destroyed' do
|
|
139
|
+
it 'destroys the server' do
|
|
140
|
+
state.should_receive(:delete).with(:server_id)
|
|
141
|
+
state.should_receive(:delete).with(:hostname)
|
|
142
|
+
driver.destroy(state)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
context 'no server ID present' do
|
|
147
|
+
let(:state) { Hash.new }
|
|
148
|
+
|
|
149
|
+
it 'does nothing' do
|
|
150
|
+
driver.stub(:compute)
|
|
151
|
+
driver.should_not_receive(:compute)
|
|
152
|
+
state.should_not_receive(:delete)
|
|
153
|
+
driver.destroy(state)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
context 'a server that was already destroyed' do
|
|
158
|
+
let(:servers) do
|
|
159
|
+
s = double('servers')
|
|
160
|
+
s.stub(:get).with('12345').and_return(nil)
|
|
161
|
+
s
|
|
162
|
+
end
|
|
163
|
+
let(:compute) { double(servers: servers) }
|
|
164
|
+
let(:driver) do
|
|
165
|
+
d = Kitchen::Driver::Joyent.new(config)
|
|
166
|
+
d.instance = instance
|
|
167
|
+
d.stub(:compute).and_return(compute)
|
|
168
|
+
d
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it 'does not try to destroy the server again' do
|
|
172
|
+
allow_message_expectations_on_nil
|
|
173
|
+
driver.destroy(state)
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
describe '#compute' do
|
|
179
|
+
let(:config) do
|
|
180
|
+
{
|
|
181
|
+
joyent_username: 'honeybadger',
|
|
182
|
+
joyent_keyname: 'dontcare',
|
|
183
|
+
joyent_keyfile: 'dat.pem'
|
|
184
|
+
}
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
context 'all requirements provided' do
|
|
188
|
+
it 'creates a new compute connection' do
|
|
189
|
+
Fog::Compute.stub(:new) { |arg| arg }
|
|
190
|
+
res = config.merge(provider: :joyent)
|
|
191
|
+
expect(driver.send(:compute)).to eq(res)
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
context 'no joyent_username provided' do
|
|
196
|
+
let(:config) { { joyent_username: 'honeybadger' } }
|
|
197
|
+
|
|
198
|
+
it 'raises an error' do
|
|
199
|
+
expect { driver.send(:compute) }.to raise_error(ArgumentError)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
context 'no joyent_keyname provided' do
|
|
204
|
+
let(:config) { { joyent_keyname: 'dontcare' } }
|
|
205
|
+
|
|
206
|
+
it 'raises an error' do
|
|
207
|
+
expect { driver.send(:compute) }.to raise_error(ArgumentError)
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
context 'no joyent_keyfile provided' do
|
|
212
|
+
let(:config) { { joyent_keyfile: '/path/to/dat.pem' } }
|
|
213
|
+
|
|
214
|
+
it 'raises an error' do
|
|
215
|
+
expect { driver.send(:compute) }.to raise_error(ArgumentError)
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
describe '#create_server' do
|
|
222
|
+
let(:config) do
|
|
223
|
+
{
|
|
224
|
+
joyent_url: 'https://us-sw-1.api.joyentcloud.com',
|
|
225
|
+
dataset: '87b9f4ac-5385-11e3-a304-fb868b82fe10',
|
|
226
|
+
package: 'g3-standard-4-smartos',
|
|
227
|
+
}
|
|
228
|
+
end
|
|
229
|
+
before(:each) { @config = config.dup }
|
|
230
|
+
let(:servers) do
|
|
231
|
+
s = double('servers')
|
|
232
|
+
s.stub(:create) { |arg| arg }
|
|
233
|
+
s
|
|
234
|
+
end
|
|
235
|
+
let(:compute) { double(servers: servers) }
|
|
236
|
+
let(:driver) do
|
|
237
|
+
d = Kitchen::Driver::Joyent.new(config)
|
|
238
|
+
d.instance = instance
|
|
239
|
+
d.stub(:compute).and_return(compute)
|
|
240
|
+
d
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it 'creates the server using a compute connection' do
|
|
244
|
+
expect(driver.send(:create_server)).to eq(@config)
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Sean OMeara (<someara@gmail.com>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2013, Sean OMeara
|
|
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 'rspec'
|
|
20
|
+
require 'rspec/autorun'
|
|
21
|
+
require_relative '../lib/kitchen/driver/joyent'
|
|
22
|
+
|
|
23
|
+
RSpec.configure do |config|
|
|
24
|
+
config.tty = true
|
|
25
|
+
config.color = true
|
|
26
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: kitchen-joyent
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Sean OMeara
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2013-12-27 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: test-kitchen
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ~>
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ~>
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: fog
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ! '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ! '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rubocop
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ! '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ! '>='
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: cane
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ! '>='
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ! '>='
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: countloc
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ! '>='
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ! '>='
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: rspec
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ! '>='
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ! '>='
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
description: A Test Kitchen Joyent driver
|
|
112
|
+
email:
|
|
113
|
+
- someara@gmail.com
|
|
114
|
+
executables: []
|
|
115
|
+
extensions: []
|
|
116
|
+
extra_rdoc_files: []
|
|
117
|
+
files:
|
|
118
|
+
- .gitignore
|
|
119
|
+
- .rubocop.yml
|
|
120
|
+
- .travis.yml
|
|
121
|
+
- CHANGELOG.md
|
|
122
|
+
- Gemfile
|
|
123
|
+
- LICENSE.txt
|
|
124
|
+
- README.md
|
|
125
|
+
- Rakefile
|
|
126
|
+
- kitchen-joyent.gemspec
|
|
127
|
+
- lib/kitchen/driver/joyent.rb
|
|
128
|
+
- lib/kitchen/driver/joyent_version.rb
|
|
129
|
+
- scripts/install-smartos.sh
|
|
130
|
+
- spec/kitchen/driver/joyent_spec.rb
|
|
131
|
+
- spec/spec_helper.rb
|
|
132
|
+
homepage: https://github.com/someara/kitchen-joyent
|
|
133
|
+
licenses:
|
|
134
|
+
- Apache 2.0
|
|
135
|
+
metadata: {}
|
|
136
|
+
post_install_message:
|
|
137
|
+
rdoc_options: []
|
|
138
|
+
require_paths:
|
|
139
|
+
- lib
|
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - ! '>='
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '0'
|
|
145
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
|
+
requirements:
|
|
147
|
+
- - ! '>='
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: '0'
|
|
150
|
+
requirements: []
|
|
151
|
+
rubyforge_project:
|
|
152
|
+
rubygems_version: 2.1.8
|
|
153
|
+
signing_key:
|
|
154
|
+
specification_version: 4
|
|
155
|
+
summary: A Test Kitchen Joyent driver
|
|
156
|
+
test_files:
|
|
157
|
+
- spec/kitchen/driver/joyent_spec.rb
|
|
158
|
+
- spec/spec_helper.rb
|