factor-connector-rackspace 0.0.3
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.
@@ -0,0 +1,396 @@
|
|
1
|
+
require 'factor-connector-api'
|
2
|
+
require 'fog'
|
3
|
+
|
4
|
+
Factor::Connector.service 'rackspace_compute' do
|
5
|
+
|
6
|
+
action 'list' do |params|
|
7
|
+
username = params['username']
|
8
|
+
api_key = params['api_key']
|
9
|
+
region = (params['region'] || 'ord').to_sym
|
10
|
+
|
11
|
+
fail "Username is required" unless username
|
12
|
+
fail "API Key is required" unless api_key
|
13
|
+
|
14
|
+
compute_settings = {
|
15
|
+
provider:'Rackspace',
|
16
|
+
rackspace_username:username,
|
17
|
+
rackspace_api_key:api_key,
|
18
|
+
version: :v2,
|
19
|
+
rackspace_region: region
|
20
|
+
}
|
21
|
+
|
22
|
+
info "Initializing connection settings"
|
23
|
+
begin
|
24
|
+
compute = Fog::Compute.new compute_settings
|
25
|
+
rescue
|
26
|
+
fail "Couldn't initialize connection"
|
27
|
+
end
|
28
|
+
|
29
|
+
info "Retreiving list of servers"
|
30
|
+
begin
|
31
|
+
servers = compute.servers.map {|s| s.attributes}
|
32
|
+
rescue
|
33
|
+
fail "Failed to retrieve list of servers"
|
34
|
+
end
|
35
|
+
|
36
|
+
action_callback servers
|
37
|
+
end
|
38
|
+
|
39
|
+
action 'get' do |params|
|
40
|
+
username = params['username']
|
41
|
+
api_key = params['api_key']
|
42
|
+
server_id = params['id']
|
43
|
+
region = (params['region'] || 'ord').to_sym
|
44
|
+
|
45
|
+
fail "Username is required" unless username
|
46
|
+
fail "API Key is required" unless api_key
|
47
|
+
fail "Server ID is required" unless server_id
|
48
|
+
|
49
|
+
compute_settings = {
|
50
|
+
provider:'Rackspace',
|
51
|
+
rackspace_username:username,
|
52
|
+
rackspace_api_key:api_key,
|
53
|
+
version: :v2,
|
54
|
+
rackspace_region: region
|
55
|
+
}
|
56
|
+
|
57
|
+
info "Initializing connection settings"
|
58
|
+
begin
|
59
|
+
compute = Fog::Compute.new compute_settings
|
60
|
+
rescue
|
61
|
+
fail "Couldn't initialize connection"
|
62
|
+
end
|
63
|
+
|
64
|
+
info "Retreiving servers"
|
65
|
+
begin
|
66
|
+
server = compute.servers.get(server_id).attributes
|
67
|
+
rescue
|
68
|
+
fail "Failed to retrieve server"
|
69
|
+
end
|
70
|
+
|
71
|
+
action_callback server
|
72
|
+
end
|
73
|
+
|
74
|
+
action 'create' do |params|
|
75
|
+
username = params['username']
|
76
|
+
api_key = params['api_key']
|
77
|
+
flavor_id = params['flavor_id']
|
78
|
+
image_id = params['image_id']
|
79
|
+
region = (params['region'] || 'ord').to_sym
|
80
|
+
name = params['name']
|
81
|
+
|
82
|
+
fail "Username is required" unless username
|
83
|
+
fail "API Key is required" unless api_key
|
84
|
+
fail "Flavor ID is required" unless flavor_id
|
85
|
+
fail "Image ID is required" unless image_id
|
86
|
+
|
87
|
+
|
88
|
+
compute_settings = {
|
89
|
+
provider:'Rackspace',
|
90
|
+
rackspace_username:username,
|
91
|
+
rackspace_api_key:api_key,
|
92
|
+
version: :v2,
|
93
|
+
rackspace_region: region
|
94
|
+
}
|
95
|
+
|
96
|
+
info "Initializing connection settings"
|
97
|
+
begin
|
98
|
+
compute = Fog::Compute.new compute_settings
|
99
|
+
rescue
|
100
|
+
fail "Couldn't initialize connection"
|
101
|
+
end
|
102
|
+
|
103
|
+
server_settings = {
|
104
|
+
flavor_id: flavor_id,
|
105
|
+
image_id: image_id
|
106
|
+
}
|
107
|
+
server_settings[:name] = name if name
|
108
|
+
|
109
|
+
info "Creating server"
|
110
|
+
begin
|
111
|
+
server = compute.servers.create(server_settings)
|
112
|
+
rescue
|
113
|
+
fail "Failed to create server with provided settings"
|
114
|
+
end
|
115
|
+
|
116
|
+
info "Waiting for the server. This can take a few minutes."
|
117
|
+
begin
|
118
|
+
server.wait_for { ready? }
|
119
|
+
rescue
|
120
|
+
fail "Server creation started, but couldn't get the status"
|
121
|
+
end
|
122
|
+
|
123
|
+
server.reload
|
124
|
+
server_info = server.attributes
|
125
|
+
|
126
|
+
action_callback server_info
|
127
|
+
end
|
128
|
+
|
129
|
+
action 'bootstrap' do |params|
|
130
|
+
username = params['username']
|
131
|
+
api_key = params['api_key']
|
132
|
+
flavor_id = params['flavor_id']
|
133
|
+
image_id = params['image_id']
|
134
|
+
private_key = params['private_key']
|
135
|
+
public_key = params['public_key']
|
136
|
+
region = (params['region'] || 'ord').to_sym
|
137
|
+
name = params['name']
|
138
|
+
|
139
|
+
fail "Username is required" unless username
|
140
|
+
fail "API Key is required" unless api_key
|
141
|
+
fail "Flavor ID is required" unless flavor_id
|
142
|
+
fail "Image ID is required" unless image_id
|
143
|
+
fail "Private Key is required" unless private_key
|
144
|
+
fail "Public Key is required" unless public_key
|
145
|
+
|
146
|
+
|
147
|
+
compute_settings = {
|
148
|
+
provider:'Rackspace',
|
149
|
+
rackspace_username:username,
|
150
|
+
rackspace_api_key:api_key,
|
151
|
+
version: :v2,
|
152
|
+
rackspace_region: region
|
153
|
+
}
|
154
|
+
|
155
|
+
info "Initializing connection settings"
|
156
|
+
begin
|
157
|
+
compute = Fog::Compute.new compute_settings
|
158
|
+
rescue
|
159
|
+
fail "Couldn't initialize connection"
|
160
|
+
end
|
161
|
+
|
162
|
+
info 'Setting up private key'
|
163
|
+
begin
|
164
|
+
private_key_file = Tempfile.new('private')
|
165
|
+
private_key_file.write(private_key)
|
166
|
+
private_key_file.close
|
167
|
+
rescue
|
168
|
+
fail 'Failed to setup private key'
|
169
|
+
end
|
170
|
+
|
171
|
+
info 'Setting up public key'
|
172
|
+
begin
|
173
|
+
public_key_file = Tempfile.new('public')
|
174
|
+
public_key_file.write(public_key)
|
175
|
+
public_key_file.close
|
176
|
+
rescue
|
177
|
+
fail 'Failed to setup public key'
|
178
|
+
end
|
179
|
+
|
180
|
+
server_settings = {
|
181
|
+
flavor_id: flavor_id,
|
182
|
+
image_id: image_id,
|
183
|
+
public_key_path: public_key_file.path,
|
184
|
+
private_key_path: private_key_file.path
|
185
|
+
}
|
186
|
+
server_settings[:name] = name if name
|
187
|
+
|
188
|
+
info "Creating server"
|
189
|
+
begin
|
190
|
+
server = compute.servers.bootstrap(server_settings)
|
191
|
+
rescue
|
192
|
+
fail "Failed to create server with provided settings"
|
193
|
+
end
|
194
|
+
|
195
|
+
info "Waiting for the server. This can take a few minutes."
|
196
|
+
begin
|
197
|
+
server.wait_for { ready? }
|
198
|
+
rescue
|
199
|
+
fail "Server creation started, but couldn't get the status"
|
200
|
+
end
|
201
|
+
|
202
|
+
server.reload
|
203
|
+
server_info = server.attributes
|
204
|
+
|
205
|
+
action_callback server_info
|
206
|
+
end
|
207
|
+
|
208
|
+
action 'ssh' do |params|
|
209
|
+
username = params['username']
|
210
|
+
api_key = params['api_key']
|
211
|
+
server_id = params['id']
|
212
|
+
region = (params['region'] || 'ord').to_sym
|
213
|
+
commands = params['commands']
|
214
|
+
|
215
|
+
fail "Username is required" unless username
|
216
|
+
fail "API Key is required" unless api_key
|
217
|
+
fail "Server ID is required" unless server_id
|
218
|
+
fail "Commands is required" unless commands
|
219
|
+
fail "Commands must be an array of strings" unless commands.is_a?(Array)
|
220
|
+
fail "Commands must be an array of strings" unless commands.all?{|c| c.is_a?(String)}
|
221
|
+
|
222
|
+
compute_settings = {
|
223
|
+
provider:'Rackspace',
|
224
|
+
rackspace_username:username,
|
225
|
+
rackspace_api_key:api_key,
|
226
|
+
version: :v2,
|
227
|
+
rackspace_region: region
|
228
|
+
}
|
229
|
+
|
230
|
+
info "Initializing connection settings"
|
231
|
+
begin
|
232
|
+
compute = Fog::Compute.new compute_settings
|
233
|
+
rescue
|
234
|
+
fail "Couldn't initialize connection"
|
235
|
+
end
|
236
|
+
|
237
|
+
info "Retreiving server #{server_id}"
|
238
|
+
begin
|
239
|
+
server = compute.servers.get(server_id)
|
240
|
+
server_info = server.attributes
|
241
|
+
rescue
|
242
|
+
fail "Failed to retrieve server #{server_id}"
|
243
|
+
end
|
244
|
+
|
245
|
+
info "Executing commands on server #{server_id}"
|
246
|
+
begin
|
247
|
+
ssh_results = server.ssh(commands)
|
248
|
+
|
249
|
+
call_response = ssh_results.map do |ssh_result|
|
250
|
+
{
|
251
|
+
status: ssh_result.status,
|
252
|
+
command: ssh_result.command,
|
253
|
+
stderr: ssh_result.stderr,
|
254
|
+
stdout: ssh_result.stdout
|
255
|
+
}
|
256
|
+
end
|
257
|
+
|
258
|
+
rescue
|
259
|
+
fail "Failed to execute commands on server #{server_id}"
|
260
|
+
end
|
261
|
+
|
262
|
+
action_callback call_response
|
263
|
+
end
|
264
|
+
|
265
|
+
action 'delete' do |params|
|
266
|
+
username = params['username']
|
267
|
+
api_key = params['api_key']
|
268
|
+
server_id = params['id']
|
269
|
+
region = (params['region'] || 'ord').to_sym
|
270
|
+
|
271
|
+
fail "Username is required" unless username
|
272
|
+
fail "API Key is required" unless api_key
|
273
|
+
fail "Server ID is required" unless server_id
|
274
|
+
|
275
|
+
compute_settings = {
|
276
|
+
provider:'Rackspace',
|
277
|
+
rackspace_username:username,
|
278
|
+
rackspace_api_key:api_key,
|
279
|
+
version: :v2,
|
280
|
+
rackspace_region: region
|
281
|
+
}
|
282
|
+
|
283
|
+
info "Initializing connection settings"
|
284
|
+
begin
|
285
|
+
compute = Fog::Compute.new compute_settings
|
286
|
+
rescue
|
287
|
+
fail "Couldn't initialize connection"
|
288
|
+
end
|
289
|
+
|
290
|
+
info "Retreiving servers"
|
291
|
+
begin
|
292
|
+
server = compute.servers.get(server_id)
|
293
|
+
server_info = server.attributes
|
294
|
+
rescue
|
295
|
+
fail "Failed to retrieve server"
|
296
|
+
end
|
297
|
+
|
298
|
+
info "Deleting server"
|
299
|
+
begin
|
300
|
+
server.destroy
|
301
|
+
rescue
|
302
|
+
fail "Failed to destroy server"
|
303
|
+
end
|
304
|
+
|
305
|
+
action_callback server
|
306
|
+
end
|
307
|
+
|
308
|
+
action 'reboot' do |params|
|
309
|
+
username = params['username']
|
310
|
+
api_key = params['api_key']
|
311
|
+
server_id = params['id']
|
312
|
+
region = (params['region'] || 'ord').to_sym
|
313
|
+
|
314
|
+
fail "Username is required" unless username
|
315
|
+
fail "API Key is required" unless api_key
|
316
|
+
fail "Server ID is required" unless server_id
|
317
|
+
|
318
|
+
compute_settings = {
|
319
|
+
provider:'Rackspace',
|
320
|
+
rackspace_username:username,
|
321
|
+
rackspace_api_key:api_key,
|
322
|
+
version: :v2,
|
323
|
+
rackspace_region: region
|
324
|
+
}
|
325
|
+
|
326
|
+
info "Initializing connection settings"
|
327
|
+
begin
|
328
|
+
compute = Fog::Compute.new compute_settings
|
329
|
+
rescue
|
330
|
+
fail "Couldn't initialize connection"
|
331
|
+
end
|
332
|
+
|
333
|
+
info "Retreiving server"
|
334
|
+
begin
|
335
|
+
server = compute.servers.get(server_id)
|
336
|
+
server_info = server.attributes
|
337
|
+
rescue
|
338
|
+
fail "Failed to retrieve server"
|
339
|
+
end
|
340
|
+
|
341
|
+
info "Rebooting server"
|
342
|
+
begin
|
343
|
+
server.reboot
|
344
|
+
rescue
|
345
|
+
fail "Failed to reboot server"
|
346
|
+
end
|
347
|
+
|
348
|
+
action_callback server
|
349
|
+
end
|
350
|
+
|
351
|
+
action 'change_password' do |params|
|
352
|
+
username = params['username']
|
353
|
+
api_key = params['api_key']
|
354
|
+
server_id = params['id']
|
355
|
+
new_password = params['new_password']
|
356
|
+
region = (params['region'] || 'ord').to_sym
|
357
|
+
|
358
|
+
fail "Username is required" unless username
|
359
|
+
fail "API Key is required" unless api_key
|
360
|
+
fail "Server ID is required" unless server_id
|
361
|
+
fail "New Password is required" unless new_password
|
362
|
+
|
363
|
+
compute_settings = {
|
364
|
+
provider:'Rackspace',
|
365
|
+
rackspace_username:username,
|
366
|
+
rackspace_api_key:api_key,
|
367
|
+
version: :v2,
|
368
|
+
rackspace_region: region
|
369
|
+
}
|
370
|
+
|
371
|
+
info "Initializing connection settings"
|
372
|
+
begin
|
373
|
+
compute = Fog::Compute.new compute_settings
|
374
|
+
rescue
|
375
|
+
fail "Couldn't initialize connection"
|
376
|
+
end
|
377
|
+
|
378
|
+
info "Retreiving server"
|
379
|
+
begin
|
380
|
+
server = compute.servers.get(server_id)
|
381
|
+
server_info = server.attributes
|
382
|
+
rescue
|
383
|
+
fail "Failed to retrieve server"
|
384
|
+
end
|
385
|
+
|
386
|
+
info "Rebooting server"
|
387
|
+
begin
|
388
|
+
server.change_admin_password(new_password)
|
389
|
+
rescue
|
390
|
+
fail "Failed to reboot server"
|
391
|
+
end
|
392
|
+
|
393
|
+
action_callback server
|
394
|
+
end
|
395
|
+
|
396
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'factor-connector-api'
|
2
|
+
require 'fog'
|
3
|
+
|
4
|
+
Factor::Connector.service 'rackspace_compute_flavors' do
|
5
|
+
|
6
|
+
action 'list' do |params|
|
7
|
+
username = params['username']
|
8
|
+
api_key = params['api_key']
|
9
|
+
region = (params['region'] || 'ord').to_sym
|
10
|
+
|
11
|
+
fail "Username is required" unless username
|
12
|
+
fail "API Key is required" unless api_key
|
13
|
+
|
14
|
+
compute_settings = {
|
15
|
+
provider:'Rackspace',
|
16
|
+
rackspace_username:username,
|
17
|
+
rackspace_api_key:api_key,
|
18
|
+
version: :v2,
|
19
|
+
rackspace_region: region
|
20
|
+
}
|
21
|
+
|
22
|
+
info "Initializing connection settings"
|
23
|
+
begin
|
24
|
+
compute = Fog::Compute.new compute_settings
|
25
|
+
rescue
|
26
|
+
fail "Couldn't initialize connection"
|
27
|
+
end
|
28
|
+
|
29
|
+
info "Retreiving list of flavors"
|
30
|
+
begin
|
31
|
+
flavors = compute.flavors.map {|s| s.attributes}
|
32
|
+
rescue
|
33
|
+
fail "Failed to retrieve list of flavors"
|
34
|
+
end
|
35
|
+
|
36
|
+
action_callback flavors
|
37
|
+
end
|
38
|
+
|
39
|
+
action 'get' do |params|
|
40
|
+
username = params['username']
|
41
|
+
api_key = params['api_key']
|
42
|
+
flavor_id = params['id']
|
43
|
+
region = (params['region'] || 'ord').to_sym
|
44
|
+
|
45
|
+
fail "Username is required" unless username
|
46
|
+
fail "API Key is required" unless api_key
|
47
|
+
fail "Flavor ID is required" unless flavor_id
|
48
|
+
|
49
|
+
compute_settings = {
|
50
|
+
provider:'Rackspace',
|
51
|
+
rackspace_username:username,
|
52
|
+
rackspace_api_key:api_key,
|
53
|
+
version: :v2,
|
54
|
+
rackspace_region: region
|
55
|
+
}
|
56
|
+
|
57
|
+
info "Initializing connection settings"
|
58
|
+
begin
|
59
|
+
compute = Fog::Compute.new compute_settings
|
60
|
+
rescue
|
61
|
+
fail "Couldn't initialize connection"
|
62
|
+
end
|
63
|
+
|
64
|
+
info "Retreiving flavor"
|
65
|
+
begin
|
66
|
+
flavor = compute.flavors.get(server_id).attributes
|
67
|
+
rescue
|
68
|
+
fail "Failed to retrieve flavor"
|
69
|
+
end
|
70
|
+
|
71
|
+
action_callback flavor
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'factor-connector-api'
|
2
|
+
require 'fog'
|
3
|
+
|
4
|
+
Factor::Connector.service 'rackspace_compute_images' do
|
5
|
+
|
6
|
+
action 'list' do |params|
|
7
|
+
username = params['username']
|
8
|
+
api_key = params['api_key']
|
9
|
+
region = (params['region'] || 'ord').to_sym
|
10
|
+
|
11
|
+
fail "Username is required" unless username
|
12
|
+
fail "API Key is required" unless api_key
|
13
|
+
|
14
|
+
compute_settings = {
|
15
|
+
provider:'Rackspace',
|
16
|
+
rackspace_username:username,
|
17
|
+
rackspace_api_key:api_key,
|
18
|
+
version: :v2,
|
19
|
+
rackspace_region: region
|
20
|
+
}
|
21
|
+
|
22
|
+
info "Initializing connection settings"
|
23
|
+
begin
|
24
|
+
compute = Fog::Compute.new compute_settings
|
25
|
+
rescue
|
26
|
+
fail "Couldn't initialize connection"
|
27
|
+
end
|
28
|
+
|
29
|
+
info "Retreiving list of images"
|
30
|
+
begin
|
31
|
+
images = compute.images.map {|s| s.attributes}
|
32
|
+
rescue
|
33
|
+
fail "Failed to retrieve list of images"
|
34
|
+
end
|
35
|
+
|
36
|
+
action_callback images
|
37
|
+
end
|
38
|
+
|
39
|
+
action 'get' do |params|
|
40
|
+
username = params['username']
|
41
|
+
api_key = params['api_key']
|
42
|
+
image_id = params['id']
|
43
|
+
region = (params['region'] || 'ord').to_sym
|
44
|
+
|
45
|
+
fail "Username is required" unless username
|
46
|
+
fail "API Key is required" unless api_key
|
47
|
+
fail "Image ID is required" unless image_id
|
48
|
+
|
49
|
+
compute_settings = {
|
50
|
+
provider:'Rackspace',
|
51
|
+
rackspace_username:username,
|
52
|
+
rackspace_api_key:api_key,
|
53
|
+
version: :v2,
|
54
|
+
rackspace_region: region
|
55
|
+
}
|
56
|
+
|
57
|
+
info "Initializing connection settings"
|
58
|
+
begin
|
59
|
+
compute = Fog::Compute.new compute_settings
|
60
|
+
rescue
|
61
|
+
fail "Couldn't initialize connection"
|
62
|
+
end
|
63
|
+
|
64
|
+
info "Retreiving image"
|
65
|
+
begin
|
66
|
+
image = compute.images.get(server_id).attributes
|
67
|
+
rescue
|
68
|
+
fail "Failed to retrieve image"
|
69
|
+
end
|
70
|
+
|
71
|
+
action_callback image
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: factor-connector-rackspace
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Maciej Skierkowski
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-10-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: factor-connector-api
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.0.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.0.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: fog
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.23.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.23.0
|
46
|
+
description:
|
47
|
+
email:
|
48
|
+
- maciej@factor.io
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- lib/factor/connector/rackspace_compute.rb
|
54
|
+
- lib/factor/connector/rackspace_compute_flavors.rb
|
55
|
+
- lib/factor/connector/rackspace_compute_images.rb
|
56
|
+
homepage: https://factor.io
|
57
|
+
licenses: []
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubyforge_project:
|
76
|
+
rubygems_version: 1.8.25
|
77
|
+
signing_key:
|
78
|
+
specification_version: 3
|
79
|
+
summary: Rackspace Factor.io Connector
|
80
|
+
test_files: []
|