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.
@@ -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
- r = conn.create_cloud_ip
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
- self.class.conn.update_cloud_ip(id, options)
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 cloud ip'
2
+ desc 'Create a new Cloud IP address'
3
3
  command [:create] do |c|
4
- c.desc "Number of cloud ips to create"
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 ips before destroying them"
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 cloud ips you want to destroy"
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 cloud ip #{id}"
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 cloud ip #{ip}"
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 cloud ip #{ip}"
30
+ raise "Cannot destroy mapped Cloud IP #{ip}"
31
31
  end
32
32
  end
33
- info "Destroying cloud ip #{ip}"
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 CloudIPs'
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 cloud ip #{id}"
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 ips before remapping them"
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 ip #{ip}"
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 cloud ip #{id}"
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 cloud ips you want to unmap"
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 cloud ip #{id}"
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 cloud ip #{ip}"
18
+ info "Unmapping Cloud IP #{ip}"
19
19
  ip.unmap
20
20
  ip.reload
21
21
  else
22
- warn "Cloud ip #{ip} already unmapped"
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 cloud ip"
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 cloud ip"
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 cloud ip id as the first argument" unless cip_id =~ /^cip-/
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(params)
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
- snapshots = images.select { |i| i.source_type == 'snapshot' }
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 separate multiple listeners. Protocols can be tcp, http or http+ws and timeouts are in milliseconds."
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
- consoles << { :url => url, :token => r["console_token"], :expires => r["console_token_expires"] }
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))
@@ -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
- if status == "available"
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
- o[:type] = "official"
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
@@ -1,6 +1,6 @@
1
1
  class Time
2
2
  def rfc8601
3
- self.strftime("%Y-%m-%dT%H:%M")
3
+ self.strftime(self.utc? ? "%Y-%m-%dT%H:%MZ" : "%Y-%m-%dT%H:%M")
4
4
  end
5
5
 
6
6
  def to_s
@@ -183,6 +183,7 @@ module Fog
183
183
  @connection.request(options)
184
184
  end
185
185
  end
186
+
186
187
  end
187
188
  end
188
189
  end
@@ -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
@@ -3,11 +3,11 @@ module Fog
3
3
  class Brightbox
4
4
  class Real
5
5
 
6
- def create_cloud_ip
7
- request("post", "/1.0/cloud_ips", [201])
6
+ def create_cloud_ip(options = nil)
7
+ request("post", "/1.0/cloud_ips", [201],options)
8
8
  end
9
9
 
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -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
 
@@ -1,3 +1,3 @@
1
1
  module Brightbox
2
- VERSION = "0.17.5" unless defined?(Brightbox::VERSION)
2
+ VERSION = "0.18.0" unless defined?(Brightbox::VERSION)
3
3
  end
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
- - 17
9
- - 5
10
- version: 0.17.5
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-03-21 00:00:00 +00:00
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
- - 0
202
- version: "0"
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: "0"
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.7
2645
+ rubygems_version: 1.3.6
2675
2646
  signing_key:
2676
2647
  specification_version: 3
2677
2648
  summary: The Brightbox cloud management system