brightbox-cli 0.17.5 → 0.18.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.
- data/brightbox-cli.gemspec +2 -2
- data/lib/brightbox-cli/cloud_ips.rb +50 -5
- data/lib/brightbox-cli/commands/cloudips-create.rb +9 -3
- data/lib/brightbox-cli/commands/cloudips-destroy.rb +6 -6
- data/lib/brightbox-cli/commands/cloudips-list.rb +2 -2
- data/lib/brightbox-cli/commands/cloudips-map.rb +5 -2
- data/lib/brightbox-cli/commands/cloudips-show.rb +2 -2
- data/lib/brightbox-cli/commands/cloudips-unmap.rb +4 -4
- data/lib/brightbox-cli/commands/cloudips-update.rb +10 -12
- data/lib/brightbox-cli/commands/images-list.rb +12 -15
- data/lib/brightbox-cli/commands/lbs-create.rb +1 -1
- data/lib/brightbox-cli/commands/servers-activate-console.rb +2 -1
- data/lib/brightbox-cli/images.rb +53 -11
- data/lib/brightbox-cli/ruby_core_ext.rb +1 -1
- data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/compute.rb +1 -0
- data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/models/compute/cloud_ip.rb +3 -0
- data/lib/brightbox-cli/vendor/fog/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +3 -3
- data/lib/brightbox-cli/vendor/fog/tests/brightbox/requests/compute/helper.rb +10 -0
- data/lib/brightbox-cli/version.rb +1 -1
- metadata +14 -43
data/brightbox-cli.gemspec
CHANGED
@@ -30,8 +30,8 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_dependency('hirb','~> 0.6.0')
|
31
31
|
|
32
32
|
s.add_development_dependency('rake', '~> 0.8.0')
|
33
|
-
s.add_development_dependency('vcr')
|
34
|
-
s.add_development_dependency('rspec')
|
33
|
+
s.add_development_dependency('vcr', '~> 1.11.3')
|
34
|
+
s.add_development_dependency('rspec', '~> 2.8.0')
|
35
35
|
s.add_development_dependency('mocha')
|
36
36
|
end
|
37
37
|
|
@@ -8,15 +8,33 @@ module Brightbox
|
|
8
8
|
conn.cloud_ips
|
9
9
|
end
|
10
10
|
|
11
|
-
def self.create
|
12
|
-
|
11
|
+
def self.create(options = {})
|
12
|
+
create_options = {}
|
13
|
+
if options[:t]
|
14
|
+
create_options[:port_translators] = format_translators_for_api(options[:t])
|
15
|
+
end
|
16
|
+
|
17
|
+
if options[:n] && !options[:name].empty?
|
18
|
+
create_options[:name] = options[:n]
|
19
|
+
end
|
20
|
+
r = conn.create_cloud_ip(create_options)
|
13
21
|
new(r["id"])
|
14
22
|
end
|
15
23
|
|
24
|
+
def self.format_translators_for_api(translators)
|
25
|
+
translators.split(",").map do |t|
|
26
|
+
incoming,outgoing,protocol = t.split(":")
|
27
|
+
raise "translator #{t} is invalid" if incoming.nil? || outgoing.nil? || protocol.nil?
|
28
|
+
{:incoming => incoming, :outgoing => outgoing, :protocol => protocol}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
16
32
|
def attributes
|
17
33
|
a = fog_model.attributes
|
18
34
|
if(lb_id = a[:load_balancer] || a["load_balancer"])
|
19
35
|
a[:destination] = lb_id
|
36
|
+
elsif(server_group_id = a[:server_group] || a["server_group"])
|
37
|
+
a[:destination] = server_group
|
20
38
|
else
|
21
39
|
a[:destination] = a[:server_id]
|
22
40
|
end
|
@@ -24,15 +42,25 @@ module Brightbox
|
|
24
42
|
end
|
25
43
|
|
26
44
|
def to_row
|
27
|
-
attributes
|
45
|
+
o = attributes
|
46
|
+
o[:port_translators] = translators(o)
|
47
|
+
o
|
28
48
|
end
|
29
49
|
|
30
50
|
def mapped?
|
31
51
|
status == 'mapped'
|
32
52
|
end
|
33
53
|
|
54
|
+
def translators(raw_attributes)
|
55
|
+
if translators = (raw_attributes[:port_translators] || raw_attributes['port_translators'])
|
56
|
+
translators.map {|t| [t['incoming'],t['outgoing'],t['protocol']].join(":") }
|
57
|
+
else
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
34
62
|
def self.default_field_order
|
35
|
-
[:id, :status, :public_ip, :destination, :reverse_dns]
|
63
|
+
[:id, :status, :public_ip, :destination, :reverse_dns, :name]
|
36
64
|
end
|
37
65
|
|
38
66
|
def <=>(b)
|
@@ -40,7 +68,24 @@ module Brightbox
|
|
40
68
|
end
|
41
69
|
|
42
70
|
def update(options)
|
43
|
-
|
71
|
+
params = {}
|
72
|
+
if options[:r]
|
73
|
+
params[:reverse_dns] = options[:r]
|
74
|
+
end
|
75
|
+
|
76
|
+
if options[:"delete-reverse-dns"]
|
77
|
+
params[:reverse_dns] = ""
|
78
|
+
end
|
79
|
+
|
80
|
+
if options[:n] && !options[:name].empty?
|
81
|
+
params[:name] = options[:n]
|
82
|
+
end
|
83
|
+
|
84
|
+
if options[:t]
|
85
|
+
params[:port_translators] = CloudIP.format_translators_for_api(options[:t])
|
86
|
+
end
|
87
|
+
|
88
|
+
self.class.conn.update_cloud_ip(id, params)
|
44
89
|
self.reload
|
45
90
|
self
|
46
91
|
end
|
@@ -1,10 +1,16 @@
|
|
1
1
|
module Brightbox
|
2
|
-
desc 'Create a new
|
2
|
+
desc 'Create a new Cloud IP address'
|
3
3
|
command [:create] do |c|
|
4
|
-
c.desc "Number of
|
4
|
+
c.desc "Number of Cloud IPs to create"
|
5
5
|
c.default_value 1
|
6
6
|
c.flag [:i, "count"]
|
7
7
|
|
8
|
+
c.desc "Friendly name of the Cloud IP"
|
9
|
+
c.flag [:n, :name]
|
10
|
+
|
11
|
+
c.desc "Cloud IP translators. Format: in-port:out-port:protocol. Comma separate multiple translators. Protocol can be tcp or udp."
|
12
|
+
c.flag [:t, :'port-translators']
|
13
|
+
|
8
14
|
c.action do |global_options, options, args|
|
9
15
|
|
10
16
|
if options[:i].to_s !~ /^[0-9]+$/
|
@@ -15,7 +21,7 @@ module Brightbox
|
|
15
21
|
|
16
22
|
ips = []
|
17
23
|
options[:i].times do
|
18
|
-
ips << CloudIP.create
|
24
|
+
ips << CloudIP.create(options)
|
19
25
|
end
|
20
26
|
render_table(ips, global_options)
|
21
27
|
end
|
@@ -2,24 +2,24 @@ module Brightbox
|
|
2
2
|
desc 'destroy Cloud IPs'
|
3
3
|
arg_name '[cloudip-id...]'
|
4
4
|
command [:destroy] do |c|
|
5
|
-
c.desc "Unmap mapped
|
5
|
+
c.desc "Unmap mapped IPs before destroying them"
|
6
6
|
c.switch [:u, "unmap"]
|
7
7
|
|
8
8
|
c.action do |global_options,options,args|
|
9
9
|
|
10
10
|
if args.empty?
|
11
|
-
raise "You must specify the
|
11
|
+
raise "You must specify the Cloud IPs you want to destroy"
|
12
12
|
end
|
13
13
|
|
14
14
|
ips = CloudIP.find_or_call(args) do |id|
|
15
|
-
raise "Couldn't find
|
15
|
+
raise "Couldn't find Cloud IP #{id}"
|
16
16
|
end
|
17
17
|
|
18
18
|
ips.each do |ip|
|
19
19
|
|
20
20
|
if ip.mapped?
|
21
21
|
if options[:u]
|
22
|
-
info "Unmapping
|
22
|
+
info "Unmapping Cloud IP #{ip}"
|
23
23
|
ip.unmap
|
24
24
|
3.times do
|
25
25
|
break unless ip.mapped?
|
@@ -27,10 +27,10 @@ module Brightbox
|
|
27
27
|
ip.reload
|
28
28
|
end
|
29
29
|
else
|
30
|
-
raise "Cannot destroy mapped
|
30
|
+
raise "Cannot destroy mapped Cloud IP #{ip}"
|
31
31
|
end
|
32
32
|
end
|
33
|
-
info "Destroying
|
33
|
+
info "Destroying Cloud IP #{ip}"
|
34
34
|
ip.destroy
|
35
35
|
end
|
36
36
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Brightbox
|
2
|
-
desc 'List
|
2
|
+
desc 'List Cloud IPs'
|
3
3
|
arg_name '[cloudip-id...]'
|
4
4
|
command [:list] do |c|
|
5
5
|
|
@@ -9,7 +9,7 @@ module Brightbox
|
|
9
9
|
ips = CloudIP.find(:all)
|
10
10
|
else
|
11
11
|
ips = CloudIP.find_or_call(args) do |id|
|
12
|
-
warn "Couldn't find
|
12
|
+
warn "Couldn't find Cloud IP #{id}"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -2,7 +2,7 @@ module Brightbox
|
|
2
2
|
desc 'map Cloud IPs'
|
3
3
|
arg_name 'cloudip-id destination'
|
4
4
|
command [:map] do |c|
|
5
|
-
c.desc "Unmap mapped
|
5
|
+
c.desc "Unmap mapped IPs before remapping them"
|
6
6
|
c.switch [:u, "unmap"]
|
7
7
|
|
8
8
|
c.action do |global_options,options,args|
|
@@ -28,6 +28,9 @@ module Brightbox
|
|
28
28
|
when /^lba\-/
|
29
29
|
lb = LoadBalancer.find destination_id
|
30
30
|
info "Mapping #{ip} to load balancer #{lb}"
|
31
|
+
when /grp\-/
|
32
|
+
group = ServerGroup.find destination_id
|
33
|
+
info "Mapping #{ip} to server group #{group}"
|
31
34
|
else
|
32
35
|
raise "Unknown destination '#{destination_id}'"
|
33
36
|
end
|
@@ -41,7 +44,7 @@ module Brightbox
|
|
41
44
|
ip.reload
|
42
45
|
end
|
43
46
|
else
|
44
|
-
raise "Refusing to map already mapped
|
47
|
+
raise "Refusing to map already mapped IP #{ip}"
|
45
48
|
end
|
46
49
|
end
|
47
50
|
|
@@ -10,10 +10,10 @@ module Brightbox
|
|
10
10
|
end
|
11
11
|
|
12
12
|
ips = CloudIP.find_or_call(args) do |id|
|
13
|
-
warn "Couldn't find
|
13
|
+
warn "Couldn't find Cloud IP #{id}"
|
14
14
|
end
|
15
15
|
|
16
|
-
fields = [:id, :status, :public_ip, :reverse_dns, :destination, :interface_id]
|
16
|
+
fields = [:id, :name, :reverse_dns, :status, :public_ip, :reverse_dns, :destination, :interface_id, :port_translators]
|
17
17
|
|
18
18
|
render_table(ips.compact, global_options.merge({ :vertical => true, :fields => fields}))
|
19
19
|
end
|
@@ -6,20 +6,20 @@ module Brightbox
|
|
6
6
|
c.action do |global_options,options,args|
|
7
7
|
|
8
8
|
if args.empty?
|
9
|
-
raise "You must specify the
|
9
|
+
raise "You must specify the Cloud IPs you want to unmap"
|
10
10
|
end
|
11
11
|
|
12
12
|
ips = CloudIP.find_or_call(args) do |id|
|
13
|
-
raise "Couldn't find
|
13
|
+
raise "Couldn't find Cloud IP #{id}"
|
14
14
|
end
|
15
15
|
|
16
16
|
ips.each do |ip|
|
17
17
|
if ip.mapped?
|
18
|
-
info "Unmapping
|
18
|
+
info "Unmapping Cloud IP #{ip}"
|
19
19
|
ip.unmap
|
20
20
|
ip.reload
|
21
21
|
else
|
22
|
-
warn "Cloud
|
22
|
+
warn "Cloud IP #{ip} already unmapped"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -2,15 +2,21 @@ module Brightbox
|
|
2
2
|
desc 'update Cloud IPs'
|
3
3
|
arg_name 'cloudip-id'
|
4
4
|
command [:update] do |c|
|
5
|
-
c.desc "Set reverse DNS for this
|
5
|
+
c.desc "Set reverse DNS for this Cloud IP"
|
6
6
|
c.flag [:r, "reverse-dns"]
|
7
7
|
|
8
|
-
c.desc "Delete the reverse DNS for this
|
8
|
+
c.desc "Delete the reverse DNS for this Cloud IP"
|
9
9
|
c.switch ["delete-reverse-dns"]
|
10
10
|
|
11
|
+
c.desc "Friendly name of the Cloud IP"
|
12
|
+
c.flag [:n, :name]
|
13
|
+
|
14
|
+
c.desc "Cloud IP translators. Format: in-port:out-port:protocol. Comma separate multiple translators. Protocol can be tcp or udp."
|
15
|
+
c.flag [:t, :'port-translators']
|
16
|
+
|
11
17
|
c.action do |global_options,options,args|
|
12
18
|
cip_id = args.shift
|
13
|
-
raise "You must specify the
|
19
|
+
raise "You must specify the Cloud IP id as the first argument" unless cip_id =~ /^cip-/
|
14
20
|
|
15
21
|
if options[:r] && options[:r] != "" && options[:"delete-reverse-dns"]
|
16
22
|
raise "You must either specify a reverse DNS record or --delete-reverse-dns"
|
@@ -18,16 +24,8 @@ module Brightbox
|
|
18
24
|
|
19
25
|
cip = CloudIP.find cip_id
|
20
26
|
|
21
|
-
params = {}
|
22
|
-
if options[:r]
|
23
|
-
params[:reverse_dns] = options[:r]
|
24
|
-
end
|
25
|
-
|
26
|
-
if options[:"delete-reverse-dns"]
|
27
|
-
params[:reverse_dns] = ""
|
28
|
-
end
|
29
27
|
|
30
|
-
cip.update(
|
28
|
+
cip.update(options)
|
31
29
|
cip.reload
|
32
30
|
|
33
31
|
render_table([cip], global_options)
|
@@ -5,8 +5,17 @@ module Brightbox
|
|
5
5
|
c.desc "Show all public images from all accounts"
|
6
6
|
c.switch [:a, "show-all"]
|
7
7
|
|
8
|
+
c.desc "Show only images of a given type"
|
9
|
+
c.flag [:t, :type]
|
10
|
+
|
11
|
+
c.desc "Show only images of a given status"
|
12
|
+
c.flag [:s, :status]
|
13
|
+
|
14
|
+
c.desc "Show only images for a given account identifier"
|
15
|
+
c.flag [:l, :account]
|
16
|
+
|
8
17
|
c.action do |global_options, options, args|
|
9
|
-
|
18
|
+
|
10
19
|
if args.empty?
|
11
20
|
images = Image.find(:all)
|
12
21
|
else
|
@@ -15,20 +24,8 @@ module Brightbox
|
|
15
24
|
end
|
16
25
|
end
|
17
26
|
|
18
|
-
|
19
|
-
|
20
|
-
images = images - snapshots
|
21
|
-
|
22
|
-
unless options[:a]
|
23
|
-
account = Account.conn_account
|
24
|
-
images.reject! { |i| !i.official and i.owner_id != account.id }
|
25
|
-
end
|
26
|
-
|
27
|
-
images.sort! { |a, b| a.default_sort_fields <=> b.default_sort_fields }
|
28
|
-
|
29
|
-
snapshots.sort! { |a, b| a.created_at <=> b.created_at }
|
30
|
-
|
31
|
-
render_table(images + snapshots, global_options)
|
27
|
+
images = Image.filter_images(images, options)
|
28
|
+
render_table(images, global_options)
|
32
29
|
end
|
33
30
|
end
|
34
31
|
end
|
@@ -11,7 +11,7 @@ module Brightbox
|
|
11
11
|
c.default_value "least-connections"
|
12
12
|
c.flag [:p, :policy]
|
13
13
|
|
14
|
-
c.desc "Listeners. Format: in-port:out-port:type:timeout. Comma
|
14
|
+
c.desc "Listeners. Format: in-port:out-port:type:timeout. Comma separated multiple listeners. Protocols can be tcp, http or http+ws and timeouts are in milliseconds."
|
15
15
|
c.default_value "80:80:http:50000,443:443:tcp:50000"
|
16
16
|
c.flag [:l, :listeners]
|
17
17
|
|
@@ -17,7 +17,8 @@ module Brightbox
|
|
17
17
|
info "Activating console for server #{s}"
|
18
18
|
r = s.activate_console
|
19
19
|
url = "#{r["console_url"]}/?password=#{r["console_token"]}"
|
20
|
-
|
20
|
+
expires = Time.parse(r["console_token_expires"])
|
21
|
+
consoles << { :url => url, :token => r["console_token"], :expires => expires.localtime.to_s }
|
21
22
|
end
|
22
23
|
|
23
24
|
render_table(consoles, global_options.merge(:fields => [:url, :token, :expires], :resize => false))
|
data/lib/brightbox-cli/images.rb
CHANGED
@@ -18,30 +18,72 @@ module Brightbox
|
|
18
18
|
[:id, :owner, :type, :created_on, :status, :size, :name]
|
19
19
|
end
|
20
20
|
|
21
|
+
# Filter out images that are not of the right type, account or status if the option is passed
|
22
|
+
def self.filter_images(images, options={})
|
23
|
+
# Remove images that don't match the given type
|
24
|
+
if options[:t]
|
25
|
+
images.reject! { |i| i.type != options[:t] }
|
26
|
+
end
|
27
|
+
|
28
|
+
# Remove statuses that don't match the argument
|
29
|
+
if options[:s]
|
30
|
+
images.reject! { |i| i.status != options[:s] }
|
31
|
+
end
|
32
|
+
|
33
|
+
# Remove images that don't belong to the specified owner id
|
34
|
+
if options[:l]
|
35
|
+
if options[:l] == 'brightbox'
|
36
|
+
images.reject! { |i| !i.official }
|
37
|
+
else
|
38
|
+
images.reject! { |i| i.owner_id != options[:l] }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
snapshots = images.select { |i| i.source_type == 'snapshot' }
|
43
|
+
images = images - snapshots
|
44
|
+
|
45
|
+
unless options[:a]
|
46
|
+
account = Account.conn_account
|
47
|
+
images.reject! { |i| !i.official and i.owner_id != account.id }
|
48
|
+
end
|
49
|
+
|
50
|
+
images.sort! { |a, b| a.default_sort_fields <=> b.default_sort_fields }
|
51
|
+
snapshots.sort! { |a, b| a.created_at <=> b.created_at }
|
52
|
+
images + snapshots
|
53
|
+
end
|
54
|
+
|
21
55
|
def update options
|
22
56
|
self.class.conn.update_image(id, options)
|
23
57
|
self.reload
|
24
58
|
self
|
25
59
|
end
|
26
60
|
|
61
|
+
def type
|
62
|
+
if official
|
63
|
+
"official"
|
64
|
+
else
|
65
|
+
source_type
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def status
|
70
|
+
if fog_model.attributes[:status] == "available"
|
71
|
+
public ? 'public' : 'private'
|
72
|
+
else
|
73
|
+
fog_model.attributes[:status]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
27
77
|
def to_row
|
28
78
|
o = fog_model.attributes
|
29
79
|
o[:id] = fog_model.id
|
30
|
-
|
31
|
-
o[:status] = (public ? 'public' : 'private')
|
32
|
-
else
|
33
|
-
o[:status] = status
|
34
|
-
end
|
80
|
+
o[:status] = status
|
35
81
|
o[:username] = username
|
36
82
|
o[:arch] = arch
|
37
83
|
o[:name] = name.to_s + " (#{arch})"
|
38
84
|
o[:owner] = owner_id
|
39
|
-
if official
|
40
|
-
|
41
|
-
o[:owner] = "brightbox"
|
42
|
-
else
|
43
|
-
o[:type] = source_type
|
44
|
-
end
|
85
|
+
o[:owner] = "brightbox" if official
|
86
|
+
o[:type] = type
|
45
87
|
o[:created_at] = created_at
|
46
88
|
o[:created_on] = created_at.to_s.split('T').first
|
47
89
|
o[:description] = description if description
|
@@ -22,6 +22,9 @@ module Fog
|
|
22
22
|
attribute :interface_id, :aliases => "interface", :squash => "id"
|
23
23
|
attribute :server_id, :aliases => "server", :squash => "id"
|
24
24
|
attribute :load_balancer, :alias => "load_balancer", :squash => "id"
|
25
|
+
attribute :server_group, :alias => "server_group", :squash => "id"
|
26
|
+
attribute :port_translators
|
27
|
+
attribute :name
|
25
28
|
|
26
29
|
def map(destination)
|
27
30
|
requires :identity
|
@@ -76,6 +76,11 @@ class Brightbox
|
|
76
76
|
"threshold_up" => Integer,
|
77
77
|
"threshold_down" => Integer
|
78
78
|
}
|
79
|
+
PORT_TRANSLATOR = {
|
80
|
+
"incoming" => Integer,
|
81
|
+
"outgoing" => Integer,
|
82
|
+
"protocol" => String
|
83
|
+
}
|
79
84
|
end
|
80
85
|
|
81
86
|
module Nested
|
@@ -102,6 +107,7 @@ class Brightbox
|
|
102
107
|
"url" => String,
|
103
108
|
"public_ip" => String,
|
104
109
|
"status" => String,
|
110
|
+
"name" => Fog::Nullable::String,
|
105
111
|
"reverse_dns" => String
|
106
112
|
}
|
107
113
|
|
@@ -232,9 +238,11 @@ class Brightbox
|
|
232
238
|
"public_ip" => String,
|
233
239
|
"status" => String,
|
234
240
|
"reverse_dns" => String,
|
241
|
+
"name" => Fog::Nullable::String,
|
235
242
|
"account" => Brightbox::Compute::Formats::Nested::ACCOUNT,
|
236
243
|
"interface" => Fog::Brightbox::Nullable::Interface,
|
237
244
|
"load_balancer" => Fog::Brightbox::Nullable::LoadBalancer,
|
245
|
+
"port_translators" => [Brightbox::Compute::Formats::Struct::PORT_TRANSLATOR],
|
238
246
|
"server" => Fog::Brightbox::Nullable::Server
|
239
247
|
}
|
240
248
|
|
@@ -428,9 +436,11 @@ class Brightbox
|
|
428
436
|
"public_ip" => String,
|
429
437
|
"status" => String,
|
430
438
|
"reverse_dns" => String,
|
439
|
+
"name" => Fog::Nullable::String,
|
431
440
|
"account" => Fog::Brightbox::Nullable::Account,
|
432
441
|
"interface" => Fog::Brightbox::Nullable::Interface,
|
433
442
|
"load_balancer" => Fog::Brightbox::Nullable::LoadBalancer,
|
443
|
+
"port_translators" => [Brightbox::Compute::Formats::Struct::PORT_TRANSLATOR],
|
434
444
|
"server" => Fog::Brightbox::Nullable::Server
|
435
445
|
}
|
436
446
|
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brightbox-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 81
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
7
|
+
- 18
|
8
|
+
- 0
|
9
|
+
version: 0.18.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- John Leach
|
@@ -15,18 +14,16 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2012-
|
17
|
+
date: 2012-04-18 00:00:00 +01:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: json
|
23
22
|
prerelease: false
|
24
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
24
|
requirements:
|
27
25
|
- - ~>
|
28
26
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 5
|
30
27
|
segments:
|
31
28
|
- 1
|
32
29
|
- 5
|
@@ -38,11 +35,9 @@ dependencies:
|
|
38
35
|
name: builder
|
39
36
|
prerelease: false
|
40
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
38
|
requirements:
|
43
39
|
- - ">="
|
44
40
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 3
|
46
41
|
segments:
|
47
42
|
- 0
|
48
43
|
version: "0"
|
@@ -52,11 +47,9 @@ dependencies:
|
|
52
47
|
name: excon
|
53
48
|
prerelease: false
|
54
49
|
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
50
|
requirements:
|
57
51
|
- - ~>
|
58
52
|
- !ruby/object:Gem::Version
|
59
|
-
hash: 59
|
60
53
|
segments:
|
61
54
|
- 0
|
62
55
|
- 9
|
@@ -68,11 +61,9 @@ dependencies:
|
|
68
61
|
name: formatador
|
69
62
|
prerelease: false
|
70
63
|
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
64
|
requirements:
|
73
65
|
- - ~>
|
74
66
|
- !ruby/object:Gem::Version
|
75
|
-
hash: 23
|
76
67
|
segments:
|
77
68
|
- 0
|
78
69
|
- 2
|
@@ -84,11 +75,9 @@ dependencies:
|
|
84
75
|
name: mime-types
|
85
76
|
prerelease: false
|
86
77
|
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
78
|
requirements:
|
89
79
|
- - ">="
|
90
80
|
- !ruby/object:Gem::Version
|
91
|
-
hash: 3
|
92
81
|
segments:
|
93
82
|
- 0
|
94
83
|
version: "0"
|
@@ -98,11 +87,9 @@ dependencies:
|
|
98
87
|
name: net-ssh
|
99
88
|
prerelease: false
|
100
89
|
requirement: &id006 !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
90
|
requirements:
|
103
91
|
- - ">="
|
104
92
|
- !ruby/object:Gem::Version
|
105
|
-
hash: 13
|
106
93
|
segments:
|
107
94
|
- 2
|
108
95
|
- 1
|
@@ -114,11 +101,9 @@ dependencies:
|
|
114
101
|
name: net-scp
|
115
102
|
prerelease: false
|
116
103
|
requirement: &id007 !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
104
|
requirements:
|
119
105
|
- - ~>
|
120
106
|
- !ruby/object:Gem::Version
|
121
|
-
hash: 31
|
122
107
|
segments:
|
123
108
|
- 1
|
124
109
|
- 0
|
@@ -130,11 +115,9 @@ dependencies:
|
|
130
115
|
name: nokogiri
|
131
116
|
prerelease: false
|
132
117
|
requirement: &id008 !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
118
|
requirements:
|
135
119
|
- - ">="
|
136
120
|
- !ruby/object:Gem::Version
|
137
|
-
hash: 7
|
138
121
|
segments:
|
139
122
|
- 1
|
140
123
|
- 4
|
@@ -146,11 +129,9 @@ dependencies:
|
|
146
129
|
name: ruby-hmac
|
147
130
|
prerelease: false
|
148
131
|
requirement: &id009 !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
132
|
requirements:
|
151
133
|
- - ">="
|
152
134
|
- !ruby/object:Gem::Version
|
153
|
-
hash: 3
|
154
135
|
segments:
|
155
136
|
- 0
|
156
137
|
version: "0"
|
@@ -160,11 +141,9 @@ dependencies:
|
|
160
141
|
name: hirb
|
161
142
|
prerelease: false
|
162
143
|
requirement: &id010 !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
144
|
requirements:
|
165
145
|
- - ~>
|
166
146
|
- !ruby/object:Gem::Version
|
167
|
-
hash: 7
|
168
147
|
segments:
|
169
148
|
- 0
|
170
149
|
- 6
|
@@ -176,11 +155,9 @@ dependencies:
|
|
176
155
|
name: rake
|
177
156
|
prerelease: false
|
178
157
|
requirement: &id011 !ruby/object:Gem::Requirement
|
179
|
-
none: false
|
180
158
|
requirements:
|
181
159
|
- - ~>
|
182
160
|
- !ruby/object:Gem::Version
|
183
|
-
hash: 63
|
184
161
|
segments:
|
185
162
|
- 0
|
186
163
|
- 8
|
@@ -192,39 +169,37 @@ dependencies:
|
|
192
169
|
name: vcr
|
193
170
|
prerelease: false
|
194
171
|
requirement: &id012 !ruby/object:Gem::Requirement
|
195
|
-
none: false
|
196
172
|
requirements:
|
197
|
-
- -
|
173
|
+
- - ~>
|
198
174
|
- !ruby/object:Gem::Version
|
199
|
-
hash: 3
|
200
175
|
segments:
|
201
|
-
-
|
202
|
-
|
176
|
+
- 1
|
177
|
+
- 11
|
178
|
+
- 3
|
179
|
+
version: 1.11.3
|
203
180
|
type: :development
|
204
181
|
version_requirements: *id012
|
205
182
|
- !ruby/object:Gem::Dependency
|
206
183
|
name: rspec
|
207
184
|
prerelease: false
|
208
185
|
requirement: &id013 !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
186
|
requirements:
|
211
|
-
- -
|
187
|
+
- - ~>
|
212
188
|
- !ruby/object:Gem::Version
|
213
|
-
hash: 3
|
214
189
|
segments:
|
190
|
+
- 2
|
191
|
+
- 8
|
215
192
|
- 0
|
216
|
-
version:
|
193
|
+
version: 2.8.0
|
217
194
|
type: :development
|
218
195
|
version_requirements: *id013
|
219
196
|
- !ruby/object:Gem::Dependency
|
220
197
|
name: mocha
|
221
198
|
prerelease: false
|
222
199
|
requirement: &id014 !ruby/object:Gem::Requirement
|
223
|
-
none: false
|
224
200
|
requirements:
|
225
201
|
- - ">="
|
226
202
|
- !ruby/object:Gem::Version
|
227
|
-
hash: 3
|
228
203
|
segments:
|
229
204
|
- 0
|
230
205
|
version: "0"
|
@@ -2651,27 +2626,23 @@ rdoc_options: []
|
|
2651
2626
|
require_paths:
|
2652
2627
|
- lib
|
2653
2628
|
required_ruby_version: !ruby/object:Gem::Requirement
|
2654
|
-
none: false
|
2655
2629
|
requirements:
|
2656
2630
|
- - ">="
|
2657
2631
|
- !ruby/object:Gem::Version
|
2658
|
-
hash: 3
|
2659
2632
|
segments:
|
2660
2633
|
- 0
|
2661
2634
|
version: "0"
|
2662
2635
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2663
|
-
none: false
|
2664
2636
|
requirements:
|
2665
2637
|
- - ">="
|
2666
2638
|
- !ruby/object:Gem::Version
|
2667
|
-
hash: 3
|
2668
2639
|
segments:
|
2669
2640
|
- 0
|
2670
2641
|
version: "0"
|
2671
2642
|
requirements: []
|
2672
2643
|
|
2673
2644
|
rubyforge_project: brightbox-cli
|
2674
|
-
rubygems_version: 1.3.
|
2645
|
+
rubygems_version: 1.3.6
|
2675
2646
|
signing_key:
|
2676
2647
|
specification_version: 3
|
2677
2648
|
summary: The Brightbox cloud management system
|