befog 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/befog +12 -11
- data/lib/befog/cli.rb +40 -33
- data/lib/befog/commands/add.rb +64 -30
- data/lib/befog/commands/configure.rb +27 -40
- data/lib/befog/commands/list.rb +17 -55
- data/lib/befog/commands/mixins/command.rb +52 -45
- data/lib/befog/commands/mixins/configurable.rb +9 -9
- data/lib/befog/commands/mixins/help.rb +2 -4
- data/lib/befog/commands/mixins/safely.rb +28 -0
- data/lib/befog/commands/mixins/scope.rb +127 -0
- data/lib/befog/commands/mixins/selectable.rb +62 -0
- data/lib/befog/commands/mixins/traceable.rb +29 -0
- data/lib/befog/commands/remove.rb +36 -31
- data/lib/befog/commands/run.rb +31 -23
- data/lib/befog/commands/start.rb +21 -18
- data/lib/befog/commands/stop.rb +17 -19
- data/lib/befog.rb +1 -0
- metadata +24 -37
- data/lib/befog/commands/mixins/bank.rb +0 -50
- data/lib/befog/commands/mixins/provider.rb +0 -40
- data/lib/befog/commands/mixins/server.rb +0 -13
- data/lib/befog/providers/aws.rb +0 -20
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'fog'
|
2
|
+
|
3
|
+
module Befog
|
4
|
+
module Commands
|
5
|
+
module Mixins
|
6
|
+
module Scope
|
7
|
+
|
8
|
+
def provider_name
|
9
|
+
options[:provider] or bank["provider"] or
|
10
|
+
error("Specify a provider with --provider or by adding one to the '#{bank_name}' bank.")
|
11
|
+
end
|
12
|
+
|
13
|
+
def provider?
|
14
|
+
!!options[:provider] or bank["provider"]
|
15
|
+
end
|
16
|
+
|
17
|
+
def providers
|
18
|
+
@providers ||= (configuration["providers"] ||= {})
|
19
|
+
end
|
20
|
+
|
21
|
+
def provider
|
22
|
+
@provider ||= (providers[provider_name] ||= {})
|
23
|
+
end
|
24
|
+
|
25
|
+
def account_key
|
26
|
+
provider["key"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def account_secret
|
30
|
+
provider["secret"]
|
31
|
+
end
|
32
|
+
|
33
|
+
# TODO: do something clever once we have more than 2-3 providers
|
34
|
+
def compute
|
35
|
+
case provider_name
|
36
|
+
when "aws"
|
37
|
+
@compute ||= Fog::Compute.new(:provider => "AWS",
|
38
|
+
:aws_access_key_id => account_key,
|
39
|
+
:aws_secret_access_key => account_secret,
|
40
|
+
:region => region)
|
41
|
+
else
|
42
|
+
error("Provider '#{provider_name}' is currently unsupported.")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_server(id)
|
47
|
+
compute.servers.get(id)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def region
|
52
|
+
options[:region] or bank["region"] or
|
53
|
+
error("Specify a region with --region or by adding one to the '#{bank_name}' bank.")
|
54
|
+
end
|
55
|
+
|
56
|
+
def region?
|
57
|
+
!!options[:region] or bank["region"]
|
58
|
+
end
|
59
|
+
|
60
|
+
def flavor
|
61
|
+
options[:type] or bank["type"] or
|
62
|
+
error("Specify an instance type (flavor) with --type or by adding one to the '#{bank_name}' bank.")
|
63
|
+
end
|
64
|
+
|
65
|
+
def flavor?
|
66
|
+
!!options[:type] or bank["type"]
|
67
|
+
end
|
68
|
+
|
69
|
+
def image
|
70
|
+
options[:image] or bank["image"] or
|
71
|
+
error("Specify an image with --image or by adding one to the '#{bank_name}' bank.")
|
72
|
+
end
|
73
|
+
|
74
|
+
def image?
|
75
|
+
!!options[:image] or bank["image"]
|
76
|
+
end
|
77
|
+
|
78
|
+
def security_group
|
79
|
+
options[:group] or bank["group"] or
|
80
|
+
error("Specify a security group with --group or by adding one to the '#{bank_name}' bank.")
|
81
|
+
end
|
82
|
+
|
83
|
+
def security_group?
|
84
|
+
options[:group] or bank["group"]
|
85
|
+
end
|
86
|
+
|
87
|
+
def keypair
|
88
|
+
options[:keypair] or bank["keypair"] or
|
89
|
+
error("Specify a keypair with --keypair or by adding one to the '#{bank_name}' bank.")
|
90
|
+
end
|
91
|
+
|
92
|
+
def keypair?
|
93
|
+
!!options[:keypair] or bank["keypair"]
|
94
|
+
end
|
95
|
+
|
96
|
+
def banks
|
97
|
+
configuration["banks"] ||= {}
|
98
|
+
end
|
99
|
+
|
100
|
+
def _bank
|
101
|
+
banks[bank_name] ||= {}
|
102
|
+
end
|
103
|
+
|
104
|
+
def bank
|
105
|
+
_bank["configuration"] ||= {}
|
106
|
+
end
|
107
|
+
|
108
|
+
def bank?
|
109
|
+
!!options[:bank]
|
110
|
+
end
|
111
|
+
|
112
|
+
def bank_name
|
113
|
+
options[:bank] or error("Did you mean to include a bank name?")
|
114
|
+
end
|
115
|
+
|
116
|
+
def servers
|
117
|
+
_bank["servers"] ||= []
|
118
|
+
end
|
119
|
+
|
120
|
+
def servers=(array)
|
121
|
+
_bank["servers"] = array
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Befog
|
2
|
+
module Commands
|
3
|
+
module Mixins
|
4
|
+
module Selectable
|
5
|
+
def self.included(target)
|
6
|
+
target.module_eval do
|
7
|
+
|
8
|
+
option :provider,
|
9
|
+
:short => :q,
|
10
|
+
:description => "Select servers from this provider"
|
11
|
+
|
12
|
+
option :region,
|
13
|
+
:short => :r,
|
14
|
+
:description => "Select servers from this region"
|
15
|
+
|
16
|
+
option :image,
|
17
|
+
:short => :i,
|
18
|
+
:description => "Select servers using this image"
|
19
|
+
|
20
|
+
option :keypair,
|
21
|
+
:short => :x,
|
22
|
+
:description => "Select servers using this keypair"
|
23
|
+
|
24
|
+
option :group,
|
25
|
+
:short => :g,
|
26
|
+
:description => "Select servers using this group"
|
27
|
+
|
28
|
+
option :type,
|
29
|
+
:short => :t,
|
30
|
+
:description => "Select servers of this type (flavor)"
|
31
|
+
|
32
|
+
option :id,
|
33
|
+
:short => :z,
|
34
|
+
:description => "Select server with the given ID"
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def run_for_selected(&block)
|
40
|
+
if bank?
|
41
|
+
servers.each(&block)
|
42
|
+
else
|
43
|
+
banks.keys.each do |name|
|
44
|
+
options[:bank] = name
|
45
|
+
if options[:id]
|
46
|
+
block.call(options[:id]) if servers.include?(options[:id])
|
47
|
+
else
|
48
|
+
servers.each(&block) if ((not provider? or (bank["provider"] == provider_name)) and
|
49
|
+
(not region? or (bank["region"] == region)) and
|
50
|
+
(not image? or (bank["image"] == image)) and
|
51
|
+
(not security_group? or (bank["group"] == security_group)) and
|
52
|
+
(not flavor? or (bank["type"] == flavor)))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Befog
|
2
|
+
module Commands
|
3
|
+
module Mixins
|
4
|
+
module Traceable
|
5
|
+
def self.included(target)
|
6
|
+
target.module_eval do
|
7
|
+
option :rehearse,
|
8
|
+
:short => :u,
|
9
|
+
:description => "Dry-run, verbose logging, but don't actually run anything"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def rehearse?
|
14
|
+
!!options[:rehearse]
|
15
|
+
end
|
16
|
+
|
17
|
+
def verbose?
|
18
|
+
!!options[:verbose] or rehearse?
|
19
|
+
end
|
20
|
+
|
21
|
+
def verbose(message)
|
22
|
+
log(message) if verbose?
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require "befog/commands/mixins/command"
|
2
2
|
require "befog/commands/mixins/configurable"
|
3
|
-
require "befog/commands/mixins/
|
4
|
-
require "befog/commands/mixins/
|
5
|
-
require "befog/commands/mixins/
|
3
|
+
require "befog/commands/mixins/scope"
|
4
|
+
require "befog/commands/mixins/safely"
|
5
|
+
require "befog/commands/mixins/selectable"
|
6
6
|
require "befog/commands/mixins/help"
|
7
7
|
|
8
8
|
module Befog
|
@@ -12,46 +12,51 @@ module Befog
|
|
12
12
|
|
13
13
|
include Mixins::Command
|
14
14
|
include Mixins::Configurable
|
15
|
-
include Mixins::
|
16
|
-
include Mixins::
|
17
|
-
include Mixins::
|
15
|
+
include Mixins::Scope
|
16
|
+
include Mixins::Safely
|
17
|
+
include Mixins::Selectable
|
18
18
|
include Mixins::Help
|
19
19
|
|
20
|
-
command
|
20
|
+
command :name => :remove,
|
21
|
+
:usage => "befog remove [<bank>] <options>",
|
21
22
|
:default_to_help => true
|
22
23
|
|
23
24
|
option :count,
|
24
|
-
:short =>
|
25
|
-
:long => "--count COUNT",
|
26
|
-
:required => true,
|
25
|
+
:short => :c,
|
27
26
|
:description => "The number of machines to de-provision"
|
27
|
+
|
28
|
+
option :all,
|
29
|
+
:short => :a,
|
30
|
+
:description => "Deprovision all selected servers"
|
31
|
+
|
28
32
|
|
29
33
|
def run
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
$stderr.puts "Number must be an integer greater than 0."
|
37
|
-
return
|
38
|
-
end
|
39
|
-
if count > servers.size
|
40
|
-
$stderr.puts "Number must be less than or equal to the bank size of #{bank.size}."
|
41
|
-
return
|
34
|
+
count = 0 ; threads = [] ; deleted = []
|
35
|
+
unless options[:all]
|
36
|
+
count = options[:count].to_i
|
37
|
+
if count <= 0
|
38
|
+
error "Count must be an integer greater than 0."
|
39
|
+
end
|
42
40
|
end
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
41
|
+
run_for_selected do |id|
|
42
|
+
if options[:all] or count > 0
|
43
|
+
threads << Thread.new do
|
44
|
+
safely do
|
45
|
+
log "Deprovisioning server #{id} ..."
|
46
|
+
compute.servers.get(id).destroy
|
47
|
+
deleted << id
|
48
|
+
count -= 1
|
49
|
+
end
|
50
|
+
end
|
51
51
|
end
|
52
|
-
save
|
53
52
|
end
|
53
|
+
$stdout.print "This may take a few minutes .."
|
54
|
+
sleep 1 while threads.any? { |t| $stdout.print "."; $stdout.flush ; t.alive? }
|
55
|
+
$stdout.print "\n"
|
56
|
+
self.servers -= deleted
|
57
|
+
save
|
54
58
|
end
|
59
|
+
|
55
60
|
end
|
56
61
|
end
|
57
62
|
end
|
data/lib/befog/commands/run.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require "fog"
|
2
2
|
require "befog/commands/mixins/command"
|
3
3
|
require "befog/commands/mixins/configurable"
|
4
|
-
require "befog/commands/mixins/
|
5
|
-
require "befog/commands/mixins/
|
6
|
-
require "befog/commands/mixins/
|
4
|
+
require "befog/commands/mixins/scope"
|
5
|
+
require "befog/commands/mixins/safely"
|
6
|
+
require "befog/commands/mixins/selectable"
|
7
7
|
require "befog/commands/mixins/help"
|
8
8
|
|
9
9
|
|
@@ -14,34 +14,42 @@ module Befog
|
|
14
14
|
|
15
15
|
include Mixins::Command
|
16
16
|
include Mixins::Configurable
|
17
|
-
include Mixins::
|
18
|
-
include Mixins::
|
19
|
-
include Mixins::
|
17
|
+
include Mixins::Scope
|
18
|
+
include Mixins::Safely
|
19
|
+
include Mixins::Selectable
|
20
20
|
include Mixins::Help
|
21
21
|
|
22
|
-
command
|
22
|
+
command :name => :run,
|
23
|
+
:usage => "befog run [<bank>] <options>",
|
23
24
|
:default_to_help => true
|
24
25
|
|
25
26
|
option :command,
|
26
|
-
:short =>
|
27
|
-
:long => "--command COMMAND",
|
27
|
+
:short => :c,
|
28
28
|
:required => true,
|
29
29
|
:description => "Command to run (required)"
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
|
31
|
+
option :all,
|
32
|
+
:short => :a,
|
33
|
+
:description => "Deprovision all selected servers"
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
35
|
+
|
36
|
+
def run
|
37
|
+
run_for_selected do |id|
|
38
|
+
threads = []; threads << Thread.new do
|
39
|
+
safely do
|
40
|
+
server = get_server(id)
|
41
|
+
if server.state == "running"
|
42
|
+
address = server.public_ip_address
|
43
|
+
$stdout.puts "Running command '#{options[:command]}' for #{address} ..."
|
44
|
+
result = Fog::SSH.new(address, "root").run(options[:command]).first
|
45
|
+
$stdout.puts "#{address} STDOUT: #{result.stdout}"
|
46
|
+
$stderr.puts "#{address} STDERR: #{result.stderr}" unless result.stderr.empty?
|
47
|
+
else
|
48
|
+
$stdout.puts "Server #{id} isn't running - skipping"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
sleep 1 while threads.any? { |t| t.alive? }
|
45
53
|
end
|
46
54
|
end
|
47
55
|
|
data/lib/befog/commands/start.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require "fog"
|
2
2
|
require "befog/commands/mixins/command"
|
3
3
|
require "befog/commands/mixins/configurable"
|
4
|
-
require "befog/commands/mixins/
|
5
|
-
require "befog/commands/mixins/
|
6
|
-
require "befog/commands/mixins/
|
4
|
+
require "befog/commands/mixins/scope"
|
5
|
+
require "befog/commands/mixins/safely"
|
6
|
+
require "befog/commands/mixins/selectable"
|
7
7
|
require "befog/commands/mixins/help"
|
8
8
|
|
9
9
|
module Befog
|
@@ -13,25 +13,28 @@ module Befog
|
|
13
13
|
|
14
14
|
include Mixins::Command
|
15
15
|
include Mixins::Configurable
|
16
|
-
include Mixins::
|
17
|
-
include Mixins::
|
18
|
-
include Mixins::
|
16
|
+
include Mixins::Scope
|
17
|
+
include Mixins::Safely
|
18
|
+
include Mixins::Selectable
|
19
19
|
include Mixins::Help
|
20
20
|
|
21
|
-
command
|
22
|
-
:
|
21
|
+
command :name => :start,
|
22
|
+
:usage => "befog start [<bank>] [<options>]",
|
23
|
+
:default_to_help => true
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
option :all,
|
26
|
+
:short => :a,
|
27
|
+
:description => "Deprovision all selected servers"
|
27
28
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
29
|
+
def run
|
30
|
+
run_for_selected do |id|
|
31
|
+
server = get_server(id)
|
32
|
+
if server.state == "stopped"
|
33
|
+
$stdout.puts "Starting server #{id} ..."
|
34
|
+
server.start
|
35
|
+
else
|
36
|
+
$stdout.puts "Server #{id} is already (or still) running"
|
37
|
+
end
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
data/lib/befog/commands/stop.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require "fog"
|
2
2
|
require "befog/commands/mixins/command"
|
3
3
|
require "befog/commands/mixins/configurable"
|
4
|
-
require "befog/commands/mixins/
|
5
|
-
require "befog/commands/mixins/
|
6
|
-
require "befog/commands/mixins/
|
4
|
+
require "befog/commands/mixins/scope"
|
5
|
+
require "befog/commands/mixins/safely"
|
6
|
+
require "befog/commands/mixins/selectable"
|
7
7
|
require "befog/commands/mixins/help"
|
8
8
|
|
9
9
|
module Befog
|
@@ -14,28 +14,26 @@ module Befog
|
|
14
14
|
|
15
15
|
include Mixins::Command
|
16
16
|
include Mixins::Configurable
|
17
|
-
include Mixins::
|
18
|
-
include Mixins::
|
19
|
-
include Mixins::
|
17
|
+
include Mixins::Scope
|
18
|
+
include Mixins::Selectable
|
19
|
+
include Mixins::Safely
|
20
20
|
include Mixins::Help
|
21
21
|
|
22
|
-
command
|
23
|
-
:
|
22
|
+
command :name => :stop,
|
23
|
+
:usage => "befog stop [<bank>] <options>",
|
24
|
+
:default_to_help => true
|
24
25
|
|
25
26
|
def run
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
else
|
35
|
-
$stdout.puts "Server #{id} is not (yet) running"
|
27
|
+
run_for_selected do |id|
|
28
|
+
server = get_server(id)
|
29
|
+
if server.state == "running"
|
30
|
+
$stdout.puts "Stopping server #{id} ..."
|
31
|
+
server.stop
|
32
|
+
else
|
33
|
+
$stdout.puts "Server #{id} is not (yet) running"
|
34
|
+
end
|
36
35
|
end
|
37
36
|
end
|
38
|
-
|
39
37
|
end
|
40
38
|
end
|
41
39
|
end
|
data/lib/befog.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: befog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 19
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 0.3.0
|
5
|
+
version: 0.4.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Carlo Flores carlo@spire.io
|
@@ -16,54 +11,52 @@ autorequire:
|
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
13
|
|
19
|
-
date: 2012-
|
14
|
+
date: 2012-09-12 00:00:00 Z
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
17
|
+
name: bundler
|
23
18
|
prerelease: false
|
24
19
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
20
|
none: false
|
26
21
|
requirements:
|
27
22
|
- - ~>
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
|
-
- 2
|
34
|
-
version: 1.1.2
|
24
|
+
version: "1.2"
|
35
25
|
type: :runtime
|
36
26
|
version_requirements: *id001
|
37
27
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
28
|
+
name: fog
|
39
29
|
prerelease: false
|
40
30
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
31
|
none: false
|
42
32
|
requirements:
|
43
33
|
- - ~>
|
44
34
|
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
35
|
+
version: "1.3"
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: rspec
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
49
46
|
version: "2.7"
|
50
47
|
type: :development
|
51
|
-
version_requirements: *
|
48
|
+
version_requirements: *id003
|
52
49
|
- !ruby/object:Gem::Dependency
|
53
50
|
name: yard
|
54
51
|
prerelease: false
|
55
|
-
requirement: &
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
56
53
|
none: false
|
57
54
|
requirements:
|
58
55
|
- - ~>
|
59
56
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 5
|
61
|
-
segments:
|
62
|
-
- 0
|
63
|
-
- 7
|
64
57
|
version: "0.7"
|
65
58
|
type: :development
|
66
|
-
version_requirements: *
|
59
|
+
version_requirements: *id004
|
67
60
|
description: "\t\tThe befog gem allows you to manage your cloud servers\n\
|
68
61
|
\t\tdirectly from the command-line. \n"
|
69
62
|
email:
|
@@ -80,18 +73,18 @@ files:
|
|
80
73
|
- lib/befog/commands/add.rb
|
81
74
|
- lib/befog/commands/configure.rb
|
82
75
|
- lib/befog/commands/list.rb
|
83
|
-
- lib/befog/commands/mixins/bank.rb
|
84
76
|
- lib/befog/commands/mixins/command.rb
|
85
77
|
- lib/befog/commands/mixins/configurable.rb
|
86
78
|
- lib/befog/commands/mixins/help.rb
|
87
|
-
- lib/befog/commands/mixins/
|
88
|
-
- lib/befog/commands/mixins/
|
79
|
+
- lib/befog/commands/mixins/safely.rb
|
80
|
+
- lib/befog/commands/mixins/scope.rb
|
81
|
+
- lib/befog/commands/mixins/selectable.rb
|
82
|
+
- lib/befog/commands/mixins/traceable.rb
|
89
83
|
- lib/befog/commands/remove.rb
|
90
84
|
- lib/befog/commands/run.rb
|
91
85
|
- lib/befog/commands/start.rb
|
92
86
|
- lib/befog/commands/stop.rb
|
93
87
|
- lib/befog/commands.rb
|
94
|
-
- lib/befog/providers/aws.rb
|
95
88
|
- lib/befog.rb
|
96
89
|
- bin/befog
|
97
90
|
homepage: https://github.com/spire-io/befog
|
@@ -107,23 +100,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
100
|
requirements:
|
108
101
|
- - ">="
|
109
102
|
- !ruby/object:Gem::Version
|
110
|
-
hash: 3
|
111
|
-
segments:
|
112
|
-
- 0
|
113
103
|
version: "0"
|
114
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
105
|
none: false
|
116
106
|
requirements:
|
117
107
|
- - ">="
|
118
108
|
- !ruby/object:Gem::Version
|
119
|
-
hash: 3
|
120
|
-
segments:
|
121
|
-
- 0
|
122
109
|
version: "0"
|
123
110
|
requirements: []
|
124
111
|
|
125
112
|
rubyforge_project:
|
126
|
-
rubygems_version: 1.8.
|
113
|
+
rubygems_version: 1.8.23
|
127
114
|
signing_key:
|
128
115
|
specification_version: 3
|
129
116
|
summary: Cloud provisioning CLI
|