fog 0.2.18 → 0.2.19

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.
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.2.18'
11
- s.date = '2010-07-24'
10
+ s.version = '0.2.19'
11
+ s.date = '2010-07-25'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -104,6 +104,7 @@ Gem::Specification.new do |s|
104
104
  lib/fog/aws/parsers/ec2/create_key_pair.rb
105
105
  lib/fog/aws/parsers/ec2/create_snapshot.rb
106
106
  lib/fog/aws/parsers/ec2/create_volume.rb
107
+ lib/fog/aws/parsers/ec2/deregister_image.rb
107
108
  lib/fog/aws/parsers/ec2/describe_addresses.rb
108
109
  lib/fog/aws/parsers/ec2/describe_availability_zones.rb
109
110
  lib/fog/aws/parsers/ec2/describe_images.rb
@@ -154,6 +155,7 @@ Gem::Specification.new do |s|
154
155
  lib/fog/aws/requests/ec2/delete_security_group.rb
155
156
  lib/fog/aws/requests/ec2/delete_snapshot.rb
156
157
  lib/fog/aws/requests/ec2/delete_volume.rb
158
+ lib/fog/aws/requests/ec2/deregister_image.rb
157
159
  lib/fog/aws/requests/ec2/describe_addresses.rb
158
160
  lib/fog/aws/requests/ec2/describe_availability_zones.rb
159
161
  lib/fog/aws/requests/ec2/describe_images.rb
@@ -240,6 +242,13 @@ Gem::Specification.new do |s|
240
242
  lib/fog/credentials.rb
241
243
  lib/fog/deprecation.rb
242
244
  lib/fog/errors.rb
245
+ lib/fog/go_grid.rb
246
+ lib/fog/go_grid/bin.rb
247
+ lib/fog/go_grid/requests/common_lookup_list.rb
248
+ lib/fog/go_grid/requests/grid_image_list.rb
249
+ lib/fog/go_grid/requests/grid_ip_list.rb
250
+ lib/fog/go_grid/requests/grid_loadbalancer_list.rb
251
+ lib/fog/go_grid/requests/grid_server_list.rb
243
252
  lib/fog/hmac.rb
244
253
  lib/fog/linode.rb
245
254
  lib/fog/linode/bin.rb
data/lib/fog.rb CHANGED
@@ -29,6 +29,7 @@ require 'fog/ssh'
29
29
 
30
30
  require 'fog/aws'
31
31
  require 'fog/bluebox'
32
+ require 'fog/go_grid'
32
33
  require 'fog/linode'
33
34
  require 'fog/local'
34
35
  require 'fog/new_servers'
@@ -40,7 +41,7 @@ require 'fog/vcloud'
40
41
  module Fog
41
42
 
42
43
  unless const_defined?(:VERSION)
43
- VERSION = '0.2.18'
44
+ VERSION = '0.2.19'
44
45
  end
45
46
 
46
47
  module Mock
@@ -67,16 +67,19 @@ module Fog
67
67
  path << letters(rand(9) + 8)
68
68
  end
69
69
  {
70
- "imageOwnerId" => letters(rand(5) + 4),
71
- "productCodes" => [],
72
- "kernelId" => kernel_id,
73
- "ramdiskId" => ramdisk_id,
74
- "imageState" => "available",
75
- "imageId" => image_id,
76
- "architecture" => "i386",
77
- "isPublic" => true,
78
- "imageLocation" => path.join('/'),
79
- "imageType" => "machine"
70
+ "imageOwnerId" => letters(rand(5) + 4),
71
+ "blockDeviceMapping" => [],
72
+ "productCodes" => [],
73
+ "kernelId" => kernel_id,
74
+ "ramdiskId" => ramdisk_id,
75
+ "imageState" => "available",
76
+ "imageId" => image_id,
77
+ "architecture" => "i386",
78
+ "isPublic" => true,
79
+ "imageLocation" => path.join('/'),
80
+ "imageType" => "machine",
81
+ "rootDeviceType" => ["ebs","instance-store"][rand(2)],
82
+ "rootDeviceName" => "/dev/sda1"
80
83
  }
81
84
  end
82
85
 
@@ -39,6 +39,7 @@ module Fog
39
39
  request 'delete_security_group'
40
40
  request 'delete_snapshot'
41
41
  request 'delete_volume'
42
+ request 'deregister_image'
42
43
  request 'describe_addresses'
43
44
  request 'describe_availability_zones'
44
45
  request 'describe_images'
@@ -6,21 +6,39 @@ module Fog
6
6
 
7
7
  class Image < Fog::Model
8
8
 
9
- identity :id, 'imageId'
9
+ identity :id, 'imageId'
10
10
 
11
11
  attribute :architecture
12
- attribute :location, 'imageLocation'
13
- attribute :owner_id, 'imageOwnerId'
14
- attribute :state, 'imageState'
15
- attribute :type, 'imageType'
16
- attribute :is_public, 'isPublic'
17
- attribute :kernel_id, 'kernelId'
12
+ attribute :block_device_mapping, 'blockDeviceMapping'
13
+ attribute :location, 'imageLocation'
14
+ attribute :owner_id, 'imageOwnerId'
15
+ attribute :state, 'imageState'
16
+ attribute :type, 'imageType'
17
+ attribute :is_public, 'isPublic'
18
+ attribute :kernel_id, 'kernelId'
18
19
  attribute :platform
19
- attribute :product_codes, 'productCodes'
20
- attribute :ramdisk_id, 'ramdiskId'
20
+ attribute :product_codes, 'productCodes'
21
+ attribute :ramdisk_id, 'ramdiskId'
22
+ attribute :root_device_type, 'rootDeviceType'
23
+ attribute :root_device_name, 'rootDeviceName'
24
+
25
+ def deregister(delete_snapshot = false)
26
+ connection.deregister_image(@id)
27
+
28
+ if(delete_snapshot && @root_device_type=="ebs")
29
+ @block_device_mapping.each do |block_device|
30
+ next if block_device["deviceName"] != @root_device_name
31
+ snapshot_id = block_device["snapshotId"]
32
+ snapshot = @connection.snapshots.get(snapshot_id)
33
+ return snapshot.destroy
34
+ end
35
+ end
36
+
37
+ return true
38
+ end
21
39
 
22
40
  end
23
41
 
24
42
  end
25
43
  end
26
- end
44
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DeregisterImage < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'return', 'requestId', 'imageId'
11
+ @response[name] = @value
12
+ end
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -6,7 +6,7 @@ module Fog
6
6
  class DescribeImages < Fog::Parsers::Base
7
7
 
8
8
  def reset
9
- @image = { 'productCodes' => [] }
9
+ @image = { 'productCodes' => [], 'blockDeviceMapping' => nil }
10
10
  @response = { 'imagesSet' => [] }
11
11
  end
12
12
 
@@ -14,12 +14,17 @@ module Fog
14
14
  super
15
15
  if name == 'productCodes'
16
16
  @in_product_codes = true
17
+ elsif name == 'blockDeviceMapping'
18
+ @in_block_device_mapping = true
19
+ @image['blockDeviceMapping'] = []
20
+ elsif name == 'item' && @in_block_device_mapping
21
+ @image['blockDeviceMapping'] << {}
17
22
  end
18
23
  end
19
24
 
20
25
  def end_element(name)
21
26
  case name
22
- when 'architecture', 'imageId', 'imageLocation', 'imageOwnerId', 'imageState', 'imageType', 'kernelId', 'platform', 'ramdiskId'
27
+ when 'architecture', 'imageId', 'imageLocation', 'imageOwnerId', 'imageState', 'imageType', 'kernelId', 'platform', 'ramdiskId', 'rootDeviceType','rootDeviceName'
23
28
  @image[name] = @value
24
29
  when 'isPublic'
25
30
  if @value == 'true'
@@ -28,7 +33,8 @@ module Fog
28
33
  @image[name] = false
29
34
  end
30
35
  when 'item'
31
- unless @in_product_codes
36
+ if @in_block_device_mapping
37
+ elsif !@in_product_codes
32
38
  @response['imagesSet'] << @image
33
39
  @image = { 'productCodes' => [] }
34
40
  end
@@ -36,8 +42,13 @@ module Fog
36
42
  @image['productCodes'] << @value
37
43
  when 'productCodes'
38
44
  @in_product_codes = false
45
+ when 'blockDeviceMapping'
46
+ @in_block_device_mapping = false
39
47
  when 'requestId'
40
48
  @response[name] = @value
49
+ when 'deviceName','virtualName','snapshotId','volumeSize','deleteOnTermination'
50
+ l = @image['blockDeviceMapping'].length
51
+ @image['blockDeviceMapping'][l-1].store(name,@value)
41
52
  end
42
53
  end
43
54
 
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module AWS
3
+ module EC2
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/ec2/deregister_image'
7
+
8
+ # deregister an image
9
+ #
10
+ # ==== Parameters
11
+ # * image_id<~String> - Id of image to deregister
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Hash>:
16
+ # * 'return'<~Boolean> - Returns true if deregistration succeeded
17
+ # * 'requestId'<~String> - Id of request
18
+ def deregister_image(image_id)
19
+ request(
20
+ 'Action' => 'DeregisterImage',
21
+ 'ImageId' => image_id,
22
+ :parser => Fog::Parsers::AWS::EC2::DeregisterImage.new
23
+ )
24
+ end
25
+
26
+ end
27
+
28
+ class Mock
29
+
30
+ def deregister_image(image_id)
31
+ response = Excon::Response.new
32
+ if image_id
33
+ response.status = 200
34
+ response.body = {
35
+ 'requestId' => Fog::AWS::Mock.request_id,
36
+ 'return' => "true"
37
+ }
38
+ response
39
+ else
40
+ message = 'MissingParameter => '
41
+ if !instance_id
42
+ message << 'The request must contain the parameter image_id'
43
+ end
44
+ raise Fog::AWS::EC2::Error.new(message)
45
+ end
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -20,6 +20,7 @@ module Fog
20
20
  # * 'requestId'<~String> - Id of request
21
21
  # * 'imagesSet'<~Array>:
22
22
  # * 'architecture'<~String> - Architecture of the image
23
+ # * 'blockDeviceMapping'<~Array> - An array of mapped block devices
23
24
  # * 'imageId'<~String> - Id of the image
24
25
  # * 'imageLocation'<~String> - Location of the image
25
26
  # * 'imageOwnerId'<~String> - Id of the owner of the image
@@ -30,6 +31,8 @@ module Fog
30
31
  # * 'platform'<~String> - Operating platform of the image
31
32
  # * 'productCodes'<~Array> - Product codes for the image
32
33
  # * 'ramdiskId'<~String> - Ramdisk id associated with image, if any
34
+ # * 'rootDeviceName'<~String> - Root device name, e.g. /dev/sda1
35
+ # * 'rootDeviceType'<~String> - Root device type, ebs or instance-store
33
36
  def describe_images(options = {})
34
37
  if image_id = options.delete('ImageId')
35
38
  options.merge!(AWS.indexed_param('ImageId', image_id))
@@ -1,6 +1,7 @@
1
1
  require 'fog/credentials'
2
2
 
3
3
  require 'fog/aws/bin'
4
+ require 'fog/go_grid/bin'
4
5
  require 'fog/linode/bin'
5
6
  require 'fog/local/bin'
6
7
  require 'fog/new_servers/bin'
@@ -15,7 +16,7 @@ module Fog
15
16
 
16
17
  def services
17
18
  services = []
18
- [::AWS, ::Linode, ::Local, ::NewServers, ::Rackspace, ::Slicehost, ::Terremark, ::Vcloud, ::Bluebox].each do |service|
19
+ [::AWS, ::GoGrid, ::Linode, ::Local, ::NewServers, ::Rackspace, ::Slicehost, ::Terremark, ::Vcloud, ::Bluebox].each do |service|
19
20
  if service.initialized?
20
21
  services << service
21
22
  end
@@ -0,0 +1,88 @@
1
+ module Fog
2
+ module GoGrid
3
+ extend Fog::Service
4
+
5
+ requires :go_grid_api_key
6
+ requires :go_grid_shared_secret
7
+
8
+ model_path 'fog/go_grid/models'
9
+
10
+ request_path 'fog/go_grid/requests'
11
+ request 'common_lookup_list'
12
+ request 'grid_image_list'
13
+ request 'grid_ip_list'
14
+ request 'grid_loadbalancer_list'
15
+ request 'grid_server_list'
16
+
17
+ class Mock
18
+ include Collections
19
+
20
+ def self.data
21
+ @data ||= Hash.new do |hash, key|
22
+ hash[key] = {}
23
+ end
24
+ end
25
+
26
+ def self.reset_data(keys=data.keys)
27
+ for key in [*keys]
28
+ data.delete(key)
29
+ end
30
+ end
31
+
32
+ def initialize(options={})
33
+ @go_grid_api_key = options[:go_grid_api_key]
34
+ @go_grid_shared_secret = options[:go_grid_shared_secret]
35
+ @data = self.class.data[@go_grid_api_key]
36
+ end
37
+
38
+ end
39
+
40
+ class Real
41
+ include Collections
42
+
43
+ def initialize(options={})
44
+ @go_grid_api_key = options[:go_grid_api_key]
45
+ @go_grid_shared_secret = options[:go_grid_shared_secret]
46
+ @host = options[:host] || "api.gogrid.com"
47
+ @path = options[:path] || "/api"
48
+ @port = options[:port] || 443
49
+ @scheme = options[:scheme] || 'https'
50
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
51
+ end
52
+
53
+ def reload
54
+ @connection.reset
55
+ end
56
+
57
+ def request(params)
58
+ params[:query] ||= {}
59
+ params[:query].merge!({
60
+ 'api_key' => @go_grid_api_key,
61
+ 'format' => 'json',
62
+ 'sig' => Digest::MD5.hexdigest("#{@go_grid_api_key}#{@go_grid_shared_secret}#{Time.now.to_i}"),
63
+ 'v' => '1.4'
64
+ })
65
+
66
+ begin
67
+ response = @connection.request(
68
+ params.merge!(:path => "#{@path}/#{params[:path]}")
69
+ )
70
+ rescue Excon::Errors::Error => error
71
+ raise case error
72
+ when Excon::Errors::NotFound
73
+ Fog::Go_Grid::NotFound.slurp(error)
74
+ else
75
+ error
76
+ end
77
+ end
78
+
79
+ unless response.body.empty?
80
+ response.body = JSON.parse(response.body)
81
+ end
82
+
83
+ response
84
+ end
85
+
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,30 @@
1
+ module GoGrid
2
+ class << self
3
+ if Fog.credentials[:go_grid_api_key] && Fog.credentials[:go_grid_shared_secret]
4
+
5
+ def initialized?
6
+ true
7
+ end
8
+
9
+ def [](service)
10
+ @@connections ||= Hash.new do |hash, key|
11
+ credentials = Fog.credentials.reject do |k,v|
12
+ ![:go_grid_api_key, :go_grid_shared_secret].include?(k)
13
+ end
14
+ hash[key] = case key
15
+ when :go_grid
16
+ Fog::GoGrid.new(credentials)
17
+ end
18
+ end
19
+ @@connections[service]
20
+ end
21
+
22
+ else
23
+
24
+ def initialized?
25
+ false
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Real
4
+
5
+ # List options and lookups
6
+ #
7
+ # ==== Parameters
8
+ # * 'lookup'<~String> - the lookup to be listed
9
+ # * options<~Hash>:
10
+ # * 'sort'<~String> - column to sort result by in ['description', 'id', 'name']
11
+ # * 'asc'<~String> - order to sort in ['true','false']
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Array>:
16
+ # TODO: docs
17
+ def common_lookup_list(lookup, options={})
18
+ request(
19
+ :expects => 200,
20
+ :method => 'GET',
21
+ :path => 'common/lookup/list',
22
+ :query => {'lookup' => lookup}.merge!(options)
23
+ )
24
+ end
25
+
26
+ end
27
+
28
+ class Mock
29
+
30
+ def common_lookup_list(lookup, options={})
31
+ Fog::Mock.not_implemented
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Real
4
+
5
+ # List images
6
+ #
7
+ # ==== Parameters
8
+ # * options<~Hash>:
9
+ # * 'datacenter'<~String> - datacenter to limit results to
10
+ # * 'isPublic'<~String> - If true only returns public images, in ['false', 'true']
11
+ # * 'num_items'<~Integer> - Number of items to return
12
+ # * 'page'<~Integer> - Page index for paginated results
13
+ # * 'state'<~String> - state to limit results to, in ['Saving', 'Available']
14
+ # * 'type'<~String> - image type to limit results to
15
+ #
16
+ # ==== Returns
17
+ # * response<~Excon::Response>:
18
+ # * body<~Array>:
19
+ # TODO: docs
20
+ def grid_image_list(options={})
21
+ request(
22
+ :expects => 200,
23
+ :method => 'GET',
24
+ :path => 'grid/image/list',
25
+ :query => options
26
+ )
27
+ end
28
+
29
+ end
30
+
31
+ class Mock
32
+
33
+ def grid_image_list(options={})
34
+ Fog::Mock.not_implemented
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Real
4
+
5
+ # List ips
6
+ #
7
+ # ==== Parameters
8
+ # * options<~Hash>:
9
+ # * 'datacenter'<~String> - datacenter to limit results to
10
+ # * 'ip.state'<~String> - state to limit results to in ip.state
11
+ # * 'ip.type'<~String> - type to limit results to in ip.type
12
+ # * 'num_items'<~Integer> - Number of items to return
13
+ # * 'page'<~Integer> - Page index for paginated results
14
+ #
15
+ # ==== Returns
16
+ # * response<~Excon::Response>:
17
+ # * body<~Array>:
18
+ # TODO: docs
19
+ def grid_ip_list(options={})
20
+ request(
21
+ :expects => 200,
22
+ :method => 'GET',
23
+ :path => 'grid/ip/list',
24
+ :query => options
25
+ )
26
+ end
27
+
28
+ end
29
+
30
+ class Mock
31
+
32
+ def grid_ip_list(options={})
33
+ Fog::Mock.not_implemented
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Real
4
+
5
+ # List load balancers
6
+ #
7
+ # ==== Parameters
8
+ # * options<~Hash>:
9
+ # * 'datacenter'<~String> - datacenter to limit results to
10
+ # * 'num_items'<~Integer> - Number of items to return
11
+ # * 'page'<~Integer> - Page index for paginated results
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Array>:
16
+ # TODO: docs
17
+ def grid_loadbalancer_list(options={})
18
+ request(
19
+ :expects => 200,
20
+ :method => 'GET',
21
+ :path => 'grid/loadbalancer/list',
22
+ :query => options
23
+ )
24
+ end
25
+
26
+ end
27
+
28
+ class Mock
29
+
30
+ def grid_loadbalancer_list(options={})
31
+ Fog::Mock.not_implemented
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Real
4
+
5
+ # List servers
6
+ #
7
+ # ==== Parameters
8
+ # * options<~Hash>:
9
+ # * 'datacenter'<~String> - datacenter to limit results to
10
+ # * 'isSandbox'<~String> - If true only returns Image Sandbox servers, in ['false', 'true']
11
+ # * 'num_items'<~Integer> - Number of items to return
12
+ # * 'page'<~Integer> - Page index for paginated results
13
+ # * 'server.type'<~String> - server type to limit results to
14
+ #
15
+ # ==== Returns
16
+ # * response<~Excon::Response>:
17
+ # * body<~Array>:
18
+ # TODO: docs
19
+ def grid_server_list(options={})
20
+ request(
21
+ :expects => 200,
22
+ :method => 'GET',
23
+ :path => 'grid/server/list',
24
+ :query => options
25
+ )
26
+ end
27
+
28
+ end
29
+
30
+ class Mock
31
+
32
+ def grid_server_list(options={})
33
+ Fog::Mock.not_implemented
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -17,6 +17,9 @@ describe 'EC2.describe_images' do
17
17
  image['kernelId'].should be_a(String) if image['kernelId']
18
18
  image['platform'].should be_a(String) if image['platform']
19
19
  image['ramdiskId'].should be_a(String) if image['ramdiskId']
20
+ image['rootDeviceName'].should be_a(String) if image['rootDeviceName']
21
+ ["ebs","instance-store"].should include(image['rootDeviceType'])
22
+ image['rootDeviceName'].should be_a(String) if image['rootDeviceName']
20
23
  end
21
24
 
22
25
  it "should return proper attributes with params" do
@@ -33,6 +36,8 @@ describe 'EC2.describe_images' do
33
36
  image['kernelId'].should be_a(String) if image['kernelId']
34
37
  image['platform'].should be_a(String) if image['platform']
35
38
  image['ramdiskId'].should be_a(String) if image['ramdiskId']
39
+ ["ebs","instance-store"].should include(image['rootDeviceType'])
40
+ image['rootDeviceName'].should be_a(String) if image['rootDeviceName']
36
41
  end
37
42
 
38
43
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 18
9
- version: 0.2.18
8
+ - 19
9
+ version: 0.2.19
10
10
  platform: ruby
11
11
  authors:
12
12
  - geemus (Wesley Beary)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-24 00:00:00 -07:00
17
+ date: 2010-07-25 00:00:00 -07:00
18
18
  default_executable: fog
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -193,6 +193,7 @@ files:
193
193
  - lib/fog/aws/parsers/ec2/create_key_pair.rb
194
194
  - lib/fog/aws/parsers/ec2/create_snapshot.rb
195
195
  - lib/fog/aws/parsers/ec2/create_volume.rb
196
+ - lib/fog/aws/parsers/ec2/deregister_image.rb
196
197
  - lib/fog/aws/parsers/ec2/describe_addresses.rb
197
198
  - lib/fog/aws/parsers/ec2/describe_availability_zones.rb
198
199
  - lib/fog/aws/parsers/ec2/describe_images.rb
@@ -243,6 +244,7 @@ files:
243
244
  - lib/fog/aws/requests/ec2/delete_security_group.rb
244
245
  - lib/fog/aws/requests/ec2/delete_snapshot.rb
245
246
  - lib/fog/aws/requests/ec2/delete_volume.rb
247
+ - lib/fog/aws/requests/ec2/deregister_image.rb
246
248
  - lib/fog/aws/requests/ec2/describe_addresses.rb
247
249
  - lib/fog/aws/requests/ec2/describe_availability_zones.rb
248
250
  - lib/fog/aws/requests/ec2/describe_images.rb
@@ -329,6 +331,13 @@ files:
329
331
  - lib/fog/credentials.rb
330
332
  - lib/fog/deprecation.rb
331
333
  - lib/fog/errors.rb
334
+ - lib/fog/go_grid.rb
335
+ - lib/fog/go_grid/bin.rb
336
+ - lib/fog/go_grid/requests/common_lookup_list.rb
337
+ - lib/fog/go_grid/requests/grid_image_list.rb
338
+ - lib/fog/go_grid/requests/grid_ip_list.rb
339
+ - lib/fog/go_grid/requests/grid_loadbalancer_list.rb
340
+ - lib/fog/go_grid/requests/grid_server_list.rb
332
341
  - lib/fog/hmac.rb
333
342
  - lib/fog/linode.rb
334
343
  - lib/fog/linode/bin.rb