fog 0.3.25 → 0.3.26

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.
Files changed (37) hide show
  1. data/Gemfile.lock +9 -9
  2. data/fog.gemspec +10 -5
  3. data/lib/fog.rb +1 -1
  4. data/lib/fog/aws/compute.rb +1 -1
  5. data/lib/fog/aws/models/compute/address.rb +2 -2
  6. data/lib/fog/aws/models/compute/addresses.rb +44 -0
  7. data/lib/fog/aws/models/compute/flavors.rb +124 -0
  8. data/lib/fog/aws/models/compute/images.rb +31 -3
  9. data/lib/fog/aws/models/compute/key_pairs.rb +48 -0
  10. data/lib/fog/aws/models/compute/security_groups.rb +57 -1
  11. data/lib/fog/aws/models/compute/servers.rb +79 -0
  12. data/lib/fog/aws/models/compute/snapshots.rb +1 -1
  13. data/lib/fog/aws/models/compute/tags.rb +1 -1
  14. data/lib/fog/aws/models/compute/volume.rb +2 -2
  15. data/lib/fog/aws/models/compute/volumes.rb +69 -0
  16. data/lib/fog/aws/requests/cdn/post_distribution.rb +1 -1
  17. data/lib/fog/aws/requests/compute/create_image.rb +7 -1
  18. data/lib/fog/aws/requests/compute/create_snapshot.rb +7 -1
  19. data/lib/fog/bluebox/compute.rb +1 -1
  20. data/lib/fog/go_grid/compute.rb +1 -1
  21. data/lib/fog/new_servers/compute.rb +1 -1
  22. data/lib/fog/rackspace/cdn.rb +1 -1
  23. data/lib/fog/rackspace/compute.rb +5 -1
  24. data/lib/fog/rackspace/models/compute/server.rb +1 -1
  25. data/lib/fog/rackspace/requests/compute/confirm_resized_server.rb +34 -0
  26. data/lib/fog/rackspace/requests/compute/reboot_server.rb +5 -7
  27. data/lib/fog/rackspace/requests/compute/resize_server.rb +39 -0
  28. data/lib/fog/rackspace/requests/compute/revert_resized_server.rb +35 -0
  29. data/lib/fog/rackspace/requests/compute/server_action.rb +33 -0
  30. data/lib/fog/rackspace/storage.rb +1 -1
  31. data/lib/fog/slicehost/compute.rb +1 -1
  32. data/spec/aws/models/compute/volume_spec.rb +50 -28
  33. data/spec/aws/models/compute/volumes_spec.rb +1 -1
  34. data/tests/aws/requests/storage/bucket_tests.rb +6 -5
  35. data/tests/helper.rb +4 -0
  36. data/tests/rackspace/requests/compute/resize_tests.rb +47 -0
  37. metadata +14 -10
@@ -11,10 +11,49 @@ module Fog
11
11
 
12
12
  model Fog::AWS::Compute::SecurityGroup
13
13
 
14
+ # Creates a new security group
15
+ #
16
+ # AWS.security_groups.new
17
+ #
18
+ # ==== Returns
19
+ #
20
+ # Returns the details of the new image
21
+ #
22
+ #>> AWS.security_groups.new
23
+ # <Fog::AWS::Compute::SecurityGroup
24
+ # name=nil,
25
+ # description=nil,
26
+ # ip_permissions=nil,
27
+ # owner_id=nil
28
+ # >
29
+ #
30
+
14
31
  def initialize(attributes)
15
32
  self.filters ||= {}
16
33
  super
17
34
  end
35
+
36
+ # Returns an array of all security groups that have been created
37
+ #
38
+ # AWS.security_groups.all
39
+ #
40
+ # ==== Returns
41
+ #
42
+ # Returns an array of all security groups
43
+ #
44
+ #>> AWS.security_groups.all
45
+ # <Fog::AWS::Compute::SecurityGroups
46
+ # filters={}
47
+ # [
48
+ # <Fog::AWS::Compute::SecurityGroup
49
+ # name="default",
50
+ # description="default group",
51
+ # ip_permissions=[{"groups"=>[{"groupName"=>"default", "userId"=>"312571045469"}], "fromPort"=>-1, "toPort"=>-1, "ipRanges"=>[], "ipProtocol"=>"icmp"}, {"groups"=>[{"groupName"=>"default", "userId"=>"312571045469"}], "fromPort"=>0, "toPort"=>65535, "ipRanges"=>[], "ipProtocol"=>"tcp"}, {"groups"=>[{"groupName"=>"default", "userId"=>"312571045469"}], "fromPort"=>0, "toPort"=>65535, "ipRanges"=>[], "ipProtocol"=>"udp"}],
52
+ # owner_id="312571045469"
53
+ # >
54
+ # ]
55
+ # >
56
+ #
18
57
 
19
58
  def all(filters = filters)
20
59
  unless filters.is_a?(Hash)
@@ -22,10 +61,27 @@ module Fog
22
61
  filters = {'group-name' => [*filters]}
23
62
  end
24
63
  self.filters = filters
25
- data = connection.describe_security_groups(@filters).body
64
+ data = connection.describe_security_groups(filters).body
26
65
  load(data['securityGroupInfo'])
27
66
  end
28
67
 
68
+ # Used to retreive a security group
69
+ # group name is required to get the associated flavor information.
70
+ #
71
+ # You can run the following command to get the details:
72
+ # AWS.security_groups.get("default")
73
+ #
74
+ # ==== Returns
75
+ #
76
+ #>> AWS.security_groups.get("default")
77
+ # <Fog::AWS::Compute::SecurityGroup
78
+ # name="default",
79
+ # description="default group",
80
+ # ip_permissions=[{"groups"=>[{"groupName"=>"default", "userId"=>"312571045469"}], "fromPort"=>-1, "toPort"=>-1, "ipRanges"=>[], "ipProtocol"=>"icmp"}, {"groups"=>[{"groupName"=>"default", "userId"=>"312571045469"}], "fromPort"=>0, "toPort"=>65535, "ipRanges"=>[], "ipProtocol"=>"tcp"}, {"groups"=>[{"groupName"=>"default", "userId"=>"312571045469"}], "fromPort"=>0, "toPort"=>65535, "ipRanges"=>[], "ipProtocol"=>"udp"}],
81
+ # owner_id="312571045469"
82
+ # >
83
+ #
84
+
29
85
  def get(group_name)
30
86
  if group_name
31
87
  self.class.new(:connection => connection).all('group-name' => group_name).first
@@ -11,6 +11,45 @@ module Fog
11
11
 
12
12
  model Fog::AWS::Compute::Server
13
13
 
14
+ # Creates a new server
15
+ #
16
+ # AWS.servers.new
17
+ #
18
+ # ==== Returns
19
+ #
20
+ # Returns the details of the new server
21
+ #
22
+ #>> AWS.servers.new
23
+ # <Fog::AWS::Compute::Server
24
+ # id=nil,
25
+ # ami_launch_index=nil,
26
+ # availability_zone=nil,
27
+ # block_device_mapping=nil,
28
+ # client_token=nil,
29
+ # dns_name=nil,
30
+ # groups=["default"],
31
+ # flavor_id="m1.small",
32
+ # image_id=nil,
33
+ # ip_address=nil,
34
+ # kernel_id=nil,
35
+ # key_name=nil,
36
+ # created_at=nil,
37
+ # monitoring=nil,
38
+ # product_codes=nil,
39
+ # private_dns_name=nil,
40
+ # private_ip_address=nil,
41
+ # ramdisk_id=nil,
42
+ # reason=nil,
43
+ # root_device_name=nil,
44
+ # root_device_type=nil,
45
+ # state=nil,
46
+ # state_reason=nil,
47
+ # subnet_id=nil,
48
+ # tags=nil,
49
+ # user_data=nil
50
+ # >
51
+ #
52
+
14
53
  def initialize(attributes)
15
54
  self.filters ||= {}
16
55
  super
@@ -64,6 +103,46 @@ module Fog
64
103
  server
65
104
  end
66
105
 
106
+ # Used to retreive a server
107
+ #
108
+ # server_id is required to get the associated server information.
109
+ #
110
+ # You can run the following command to get the details:
111
+ # AWS.servers.get("i-5c973972")
112
+ #
113
+ # ==== Returns
114
+ #
115
+ #>> AWS.servers.get("i-5c973972")
116
+ # <Fog::AWS::Compute::Server
117
+ # id="i-5c973972",
118
+ # ami_launch_index=0,
119
+ # availability_zone="us-east-1b",
120
+ # block_device_mapping=[],
121
+ # client_token=nil,
122
+ # dns_name="ec2-25-2-474-44.compute-1.amazonaws.com",
123
+ # groups=["default"],
124
+ # flavor_id="m1.small",
125
+ # image_id="test",
126
+ # ip_address="25.2.474.44",
127
+ # kernel_id="aki-4e1e1da7",
128
+ # key_name=nil,
129
+ # created_at=Mon Nov 29 18:09:34 -0500 2010,
130
+ # monitoring=false,
131
+ # product_codes=[],
132
+ # private_dns_name="ip-19-76-384-60.ec2.internal",
133
+ # private_ip_address="19.76.384.60",
134
+ # ramdisk_id="ari-0b3fff5c",
135
+ # reason=nil,
136
+ # root_device_name=nil,
137
+ # root_device_type="instance-store",
138
+ # state="running",
139
+ # state_reason={},
140
+ # subnet_id=nil,
141
+ # tags={},
142
+ # user_data=nil
143
+ # >
144
+ #
145
+
67
146
  def get(server_id)
68
147
  if server_id
69
148
  self.class.new(:connection => connection).all('instance-id' => server_id).first
@@ -30,7 +30,7 @@ module Fog
30
30
  end
31
31
  self
32
32
  end
33
-
33
+
34
34
  def get(snapshot_id)
35
35
  if snapshot_id
36
36
  self.class.new(:connection => connection).all('snapshot-id' => snapshot_id).first
@@ -21,7 +21,7 @@ module Fog
21
21
  data = connection.describe_tags(filters).body
22
22
  load(data['tagSet'])
23
23
  end
24
-
24
+
25
25
  def get(key)
26
26
  if key
27
27
  self.class.new(:connection => connection).all('key' => key)
@@ -87,7 +87,7 @@ module Fog
87
87
  @server = nil
88
88
  self.server_id = nil
89
89
  unless new_record?
90
- connection.detach_volume(@id)
90
+ connection.detach_volume(id)
91
91
  reload
92
92
  end
93
93
  end
@@ -96,7 +96,7 @@ module Fog
96
96
  @server = nil
97
97
  self.server_id = nil
98
98
  unless new_record?
99
- connection.detach_volume(@id, 'Force' => true)
99
+ connection.detach_volume(id, 'Force' => true)
100
100
  reload
101
101
  end
102
102
  end
@@ -12,11 +12,56 @@ module Fog
12
12
 
13
13
  model Fog::AWS::Compute::Volume
14
14
 
15
+ # Used to create a volume. There are 3 arguments and availability_zone and size are required. You can generate a new key_pair as follows:
16
+ # AWS.volumes.create(:availability_zone => 'us-east-1a', :size => 't1.micro')
17
+ #
18
+ # ==== Returns
19
+ #
20
+ #<Fog::AWS::Compute::Volume
21
+ # id="vol-1e2028b9",
22
+ # attached_at=nil,
23
+ # availability_zone="us-east-1a",
24
+ # created_at=Tue Nov 23 23:30:29 -0500 2010,
25
+ # delete_on_termination=nil,
26
+ # device=nil,
27
+ # server_id=nil,
28
+ # size="t1.micro",
29
+ # snapshot_id=nil,
30
+ # state="creating",
31
+ # tags=nil
32
+ #>
33
+ #
34
+ # The volume can be retreived by running AWS.volumes.get("vol-1e2028b9"). See get method below.
35
+ #
36
+
15
37
  def initialize(attributes)
16
38
  self.filters ||= {}
17
39
  super
18
40
  end
19
41
 
42
+ # Used to return all volumes.
43
+ # AWS.volumes.all
44
+ #
45
+ # ==== Returns
46
+ #
47
+ #>>AWS.volumes.all
48
+ #<Fog::AWS::Compute::Volume
49
+ # id="vol-1e2028b9",
50
+ # attached_at=nil,
51
+ # availability_zone="us-east-1a",
52
+ # created_at=Tue Nov 23 23:30:29 -0500 2010,
53
+ # delete_on_termination=nil,
54
+ # device=nil,
55
+ # server_id=nil,
56
+ # size="t1.micro",
57
+ # snapshot_id=nil,
58
+ # state="creating",
59
+ # tags=nil
60
+ #>
61
+ #
62
+ # The volume can be retreived by running AWS.volumes.get("vol-1e2028b9"). See get method below.
63
+ #
64
+
20
65
  def all(filters = filters)
21
66
  unless filters.is_a?(Hash)
22
67
  Formatador.display_line("[yellow][WARN] all with #{filters.class} param is deprecated, use all('volume-id' => []) instead[/] [light_black](#{caller.first})[/]")
@@ -31,6 +76,30 @@ module Fog
31
76
  self
32
77
  end
33
78
 
79
+ # Used to retreive a volume
80
+ # volume_id is required to get the associated volume information.
81
+ #
82
+ # You can run the following command to get the details:
83
+ # AWS.volumes.get("vol-1e2028b9")
84
+ #
85
+ # ==== Returns
86
+ #
87
+ #>> AWS.volumes.get("vol-1e2028b9")
88
+ # <Fog::AWS::Compute::Volume
89
+ # id="vol-1e2028b9",
90
+ # attached_at=nil,
91
+ # availability_zone="us-east-1a",
92
+ # created_at=Tue Nov 23 23:30:29 -0500 2010,
93
+ # delete_on_termination=nil,
94
+ # device=nil,
95
+ # server_id=nil,
96
+ # size="t1.micro",
97
+ # snapshot_id=nil,
98
+ # state="available",
99
+ # tags={}
100
+ # >
101
+ #
102
+
34
103
  def get(volume_id)
35
104
  if volume_id
36
105
  self.class.new(:connection => connection).all('volume-id' => volume_id).first
@@ -60,7 +60,7 @@ module Fog
60
60
  for key, value in options
61
61
  case value
62
62
  when Array
63
- for item in array
63
+ for item in value
64
64
  data << "<#{key}>#{item}</#{key}>"
65
65
  end
66
66
  when Hash
@@ -18,6 +18,7 @@ module Fog
18
18
  # * body<~Hash>:
19
19
  # * 'imageId'<~String> - The ID of the created AMI.
20
20
  # * 'requestId'<~String> - Id of request.
21
+
21
22
  def create_image(instance_id, name, description, no_reboot = false)
22
23
  request(
23
24
  'Action' => 'CreateImage',
@@ -31,7 +32,12 @@ module Fog
31
32
  end
32
33
 
33
34
  class Mock
34
-
35
+
36
+ # Usage
37
+ #
38
+ # AWS[:compute].create_image("i-ac65ee8c", "test", "something")
39
+ #
40
+
35
41
  def create_image(instance_id, name, description, no_reboot = false)
36
42
  response = Excon::Response.new
37
43
  if instance_id && !name.empty?
@@ -31,7 +31,13 @@ module Fog
31
31
  end
32
32
 
33
33
  class Mock
34
-
34
+
35
+ #
36
+ # Usage
37
+ #
38
+ # AWS[:compute].create_snapshot("vol-f7c23423", "latest snapshot")
39
+ #
40
+
35
41
  def create_snapshot(volume_id, description = nil)
36
42
  response = Excon::Response.new
37
43
  if volume = @data[:volumes][volume_id]
@@ -68,7 +68,7 @@ module Fog
68
68
 
69
69
  begin
70
70
  response = @connection.request(params.merge!({:host => @host}))
71
- rescue Excon::Errors::Error => error
71
+ rescue Excon::Errors::HTTPStatusError => error
72
72
  raise case error
73
73
  when Excon::Errors::NotFound
74
74
  Fog::Bluebox::Compute::NotFound.slurp(error)
@@ -81,7 +81,7 @@ module Fog
81
81
  response = @connection.request(
82
82
  params.merge!(:path => "#{@path}/#{params[:path]}")
83
83
  )
84
- rescue Excon::Errors::Error => error
84
+ rescue Excon::Errors::HTTPStatusError => error
85
85
  raise case error
86
86
  when Excon::Errors::NotFound
87
87
  Fog::GoGrid::Compute::NotFound.slurp(error)
@@ -70,7 +70,7 @@ module Fog
70
70
 
71
71
  begin
72
72
  response = @connection.request(params.merge!({:host => @host}))
73
- rescue Excon::Errors::Error => error
73
+ rescue Excon::Errors::HTTPStatusError => error
74
74
  raise case error
75
75
  when Excon::Errors::NotFound
76
76
  Fog::NewServers::Compute::NotFound.slurp(error)
@@ -61,7 +61,7 @@ module Fog
61
61
  :host => @host,
62
62
  :path => "#{@path}/#{params[:path]}",
63
63
  }))
64
- rescue Excon::Errors::Error => error
64
+ rescue Excon::Errors::HTTPStatusError => error
65
65
  raise case error
66
66
  when Excon::Errors::NotFound
67
67
  Fog::Rackspace::Storage::NotFound.slurp(error)
@@ -13,6 +13,7 @@ module Fog
13
13
  collection :servers
14
14
 
15
15
  request_path 'fog/rackspace/requests/compute'
16
+ request :confirm_resized_server
16
17
  request :create_image
17
18
  request :create_server
18
19
  request :delete_image
@@ -30,6 +31,9 @@ module Fog
30
31
  request :list_servers
31
32
  request :list_servers_detail
32
33
  request :reboot_server
34
+ request :revert_resized_server
35
+ request :resize_server
36
+ request :server_action
33
37
  request :update_server
34
38
 
35
39
  class Mock
@@ -88,7 +92,7 @@ module Fog
88
92
  :host => @host,
89
93
  :path => "#{@path}/#{params[:path]}"
90
94
  }))
91
- rescue Excon::Errors::Error => error
95
+ rescue Excon::Errors::HTTPStatusError => error
92
96
  raise case error
93
97
  when Excon::Errors::NotFound
94
98
  Fog::Rackspace::Compute::NotFound.slurp(error)
@@ -77,7 +77,7 @@ module Fog
77
77
 
78
78
  def save
79
79
  raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
80
- requires :flavor_id, :image_id, :name
80
+ requires :flavor_id, :image_id
81
81
  options = {
82
82
  'metadata' => metadata,
83
83
  'name' => name,
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Rackspace
3
+ class Compute
4
+ class Real
5
+
6
+ # Confirm resizing
7
+ #
8
+ # ==== Parameters
9
+ # * server_id<~Integer> - Id of server to confirm
10
+ #
11
+ def confirm_resized_server(server_id)
12
+ body = { 'confirmResize' => nil }
13
+ server_action(server_id, body, 204)
14
+ end
15
+
16
+ end
17
+
18
+ class Mock
19
+
20
+ def confirm_resized_server(server_id)
21
+ response = Excon::Response.new
22
+ response.status = 204
23
+
24
+ @data[:servers][server_id].delete('old_flavorId')
25
+ @data[:last_modified][:servers][server_id] = Time.now
26
+ @data[:servers][server_id]['status'] = 'ACTIVE'
27
+
28
+ response
29
+ end
30
+
31
+ end
32
+ end
33
+ end
34
+ end