fog 0.3.25 → 0.3.26

Sign up to get free protection for your applications and to get access to all the features.
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