fog 0.0.42 → 0.0.43
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/README.rdoc +1 -1
- data/Rakefile +1 -0
- data/VERSION.yml +2 -2
- data/bin/fog +23 -102
- data/fog.gemspec +48 -2
- data/lib/fog.rb +17 -46
- data/lib/fog/aws.rb +10 -4
- data/lib/fog/aws/bin.rb +69 -0
- data/lib/fog/aws/ec2.rb +82 -86
- data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +20 -16
- data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +19 -15
- data/lib/fog/aws/requests/s3/get_object.rb +4 -0
- data/lib/fog/aws/requests/simpledb/select.rb +42 -24
- data/lib/fog/aws/s3.rb +28 -25
- data/lib/fog/aws/simpledb.rb +21 -17
- data/lib/fog/bin.rb +79 -0
- data/lib/fog/collection.rb +20 -9
- data/lib/fog/model.rb +9 -4
- data/lib/fog/rackspace.rb +10 -3
- data/lib/fog/rackspace/bin.rb +44 -0
- data/lib/fog/rackspace/files.rb +16 -9
- data/lib/fog/rackspace/requests/files/delete_container.rb +2 -1
- data/lib/fog/rackspace/requests/files/delete_object.rb +2 -1
- data/lib/fog/rackspace/requests/files/get_container.rb +2 -1
- data/lib/fog/rackspace/requests/files/get_containers.rb +2 -1
- data/lib/fog/rackspace/requests/files/head_container.rb +2 -1
- data/lib/fog/rackspace/requests/files/head_containers.rb +2 -1
- data/lib/fog/rackspace/requests/files/put_container.rb +2 -1
- data/lib/fog/rackspace/requests/files/put_object.rb +2 -1
- data/lib/fog/rackspace/requests/servers/get_flavor_details.rb +1 -0
- data/lib/fog/rackspace/requests/servers/list_flavors.rb +1 -0
- data/lib/fog/rackspace/requests/servers/list_flavors_detail.rb +1 -0
- data/lib/fog/rackspace/requests/servers/list_images.rb +0 -1
- data/lib/fog/rackspace/requests/servers/reboot_server.rb +2 -1
- data/lib/fog/rackspace/servers.rb +31 -26
- data/lib/fog/slicehost.rb +35 -17
- data/lib/fog/slicehost/bin.rb +42 -0
- data/lib/fog/slicehost/models/flavor.rb +41 -0
- data/lib/fog/slicehost/models/flavors.rb +33 -0
- data/lib/fog/slicehost/models/image.rb +13 -0
- data/lib/fog/slicehost/models/images.rb +35 -0
- data/lib/fog/slicehost/models/server.rb +55 -0
- data/lib/fog/slicehost/models/servers.rb +37 -0
- data/lib/fog/slicehost/parsers/get_flavor.rb +24 -0
- data/lib/fog/slicehost/parsers/get_image.rb +24 -0
- data/lib/fog/slicehost/parsers/get_slice.rb +29 -0
- data/lib/fog/slicehost/requests/create_slice.rb +2 -1
- data/lib/fog/slicehost/requests/delete_slice.rb +2 -1
- data/lib/fog/slicehost/requests/get_backups.rb +1 -0
- data/lib/fog/slicehost/requests/get_flavor.rb +42 -0
- data/lib/fog/slicehost/requests/get_flavors.rb +1 -0
- data/lib/fog/slicehost/requests/get_image.rb +40 -0
- data/lib/fog/slicehost/requests/get_images.rb +1 -0
- data/lib/fog/slicehost/requests/get_slice.rb +48 -0
- data/lib/fog/slicehost/requests/get_slices.rb +1 -0
- data/lib/fog/slicehost/requests/reboot_slice.rb +49 -0
- data/lib/fog/terremark.rb +71 -0
- data/lib/fog/terremark/bin.rb +30 -0
- data/lib/fog/terremark/parsers/get_catalog.rb +43 -0
- data/lib/fog/terremark/parsers/get_catalog_item.rb +44 -0
- data/lib/fog/terremark/parsers/get_organization.rb +44 -0
- data/lib/fog/terremark/parsers/get_organizations.rb +26 -0
- data/lib/fog/terremark/parsers/get_vapp_template.rb +44 -0
- data/lib/fog/terremark/parsers/get_vdc.rb +105 -0
- data/lib/fog/terremark/requests/get_catalog.rb +44 -0
- data/lib/fog/terremark/requests/get_catalog_item.rb +47 -0
- data/lib/fog/terremark/requests/get_organization.rb +46 -0
- data/lib/fog/terremark/requests/get_organizations.rb +42 -0
- data/lib/fog/terremark/requests/get_vapp_template.rb +47 -0
- data/lib/fog/terremark/requests/get_vdc.rb +47 -0
- data/spec/slicehost/models/server_spec.rb +51 -0
- data/spec/slicehost/models/servers_spec.rb +22 -0
- data/spec/slicehost/requests/get_flavor_spec.rb +24 -0
- data/spec/slicehost/requests/get_image_spec.rb +24 -0
- data/spec/slicehost/requests/get_slice_spec.rb +41 -0
- data/spec/slicehost/requests/get_slices_spec.rb +20 -9
- data/spec/slicehost/requests/reboot_slice_spec.rb +41 -0
- data/spec/spec_helper.rb +10 -0
- metadata +55 -2
data/lib/fog/slicehost.rb
CHANGED
@@ -10,28 +10,45 @@ module Fog
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
def self.dependencies
|
14
|
+
[
|
15
|
+
"fog/slicehost/models/flavor.rb",
|
16
|
+
"fog/slicehost/models/flavors.rb",
|
17
|
+
"fog/slicehost/models/image.rb",
|
18
|
+
"fog/slicehost/models/images.rb",
|
19
|
+
"fog/slicehost/models/server.rb",
|
20
|
+
"fog/slicehost/models/servers.rb",
|
21
|
+
"fog/slicehost/parsers/create_slice.rb",
|
22
|
+
"fog/slicehost/parsers/get_backups.rb",
|
23
|
+
"fog/slicehost/parsers/get_flavor.rb",
|
24
|
+
"fog/slicehost/parsers/get_flavors.rb",
|
25
|
+
"fog/slicehost/parsers/get_image.rb",
|
26
|
+
"fog/slicehost/parsers/get_images.rb",
|
27
|
+
"fog/slicehost/parsers/get_slice.rb",
|
28
|
+
"fog/slicehost/parsers/get_slices.rb",
|
29
|
+
"fog/slicehost/requests/create_slice.rb",
|
30
|
+
"fog/slicehost/requests/delete_slice.rb",
|
31
|
+
"fog/slicehost/requests/get_backups.rb",
|
32
|
+
"fog/slicehost/requests/get_flavor.rb",
|
33
|
+
"fog/slicehost/requests/get_flavors.rb",
|
34
|
+
"fog/slicehost/requests/get_image.rb",
|
35
|
+
"fog/slicehost/requests/get_images.rb",
|
36
|
+
"fog/slicehost/requests/get_slice.rb",
|
37
|
+
"fog/slicehost/requests/get_slices.rb",
|
38
|
+
"fog/slicehost/requests/reboot_slice.rb"
|
39
|
+
]
|
40
|
+
end
|
26
41
|
|
42
|
+
def self.reload
|
43
|
+
self.dependencies.each {|dependency| load(dependency)}
|
27
44
|
if Fog.mocking?
|
28
45
|
reset_data
|
29
46
|
end
|
30
47
|
end
|
31
48
|
|
32
49
|
def initialize(options={})
|
33
|
-
unless @
|
34
|
-
raise ArgumentError.new('
|
50
|
+
unless @slicehost_password = options[:slicehost_password]
|
51
|
+
raise ArgumentError.new('slicehost_password is required to access slicehost')
|
35
52
|
end
|
36
53
|
@host = options[:host] || "api.slicehost.com"
|
37
54
|
@port = options[:port] || 443
|
@@ -41,7 +58,7 @@ module Fog
|
|
41
58
|
def request(params)
|
42
59
|
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
|
43
60
|
headers = {
|
44
|
-
'Authorization' => "Basic #{Base64.encode64(@
|
61
|
+
'Authorization' => "Basic #{Base64.encode64(@slicehost_password).chomp!}"
|
45
62
|
}
|
46
63
|
case params[:method]
|
47
64
|
when 'DELETE', 'GET', 'HEAD'
|
@@ -59,10 +76,11 @@ module Fog
|
|
59
76
|
:parser => params[:parser],
|
60
77
|
:path => params[:path]
|
61
78
|
})
|
79
|
+
|
62
80
|
response
|
63
81
|
end
|
64
82
|
|
65
83
|
end
|
66
84
|
end
|
67
85
|
|
68
|
-
Fog::Slicehost.
|
86
|
+
Fog::Slicehost.dependencies.each {|dependency| require(dependency)}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Slicehost
|
2
|
+
class << self
|
3
|
+
if Fog.credentials[:slicehost_password]
|
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
|
+
![:slicehost_password].include?(k)
|
13
|
+
end
|
14
|
+
hash[key] = case key
|
15
|
+
when :slices
|
16
|
+
Fog::Slicehost.new(credentials)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
@@connections[service]
|
20
|
+
end
|
21
|
+
|
22
|
+
def flavors
|
23
|
+
self[:slices].flavors
|
24
|
+
end
|
25
|
+
|
26
|
+
def images
|
27
|
+
self[:slices].images
|
28
|
+
end
|
29
|
+
|
30
|
+
def servers
|
31
|
+
self[:slices].servers
|
32
|
+
end
|
33
|
+
|
34
|
+
else
|
35
|
+
|
36
|
+
def initialized?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Fog
|
2
|
+
class Slicehost
|
3
|
+
|
4
|
+
class Flavor < Fog::Model
|
5
|
+
|
6
|
+
identity :id
|
7
|
+
|
8
|
+
attribute :name
|
9
|
+
attribute :price
|
10
|
+
attribute :ram
|
11
|
+
|
12
|
+
def bits
|
13
|
+
# 64
|
14
|
+
raise StandardError.new("Figure me out!?!")
|
15
|
+
end
|
16
|
+
|
17
|
+
def cores
|
18
|
+
# # 2 quad-cores >= 2Ghz = 8 cores
|
19
|
+
# 8 * case ram
|
20
|
+
# when 256
|
21
|
+
# 1/64.0
|
22
|
+
# when 512
|
23
|
+
# 1/32.0
|
24
|
+
# when 1024
|
25
|
+
# 1/16.0
|
26
|
+
# when 2048
|
27
|
+
# 1/8.0
|
28
|
+
# when 4096
|
29
|
+
# 1/4.0
|
30
|
+
# when 8192
|
31
|
+
# 1/2.0
|
32
|
+
# when 15872
|
33
|
+
# 1
|
34
|
+
# end
|
35
|
+
raise StandardError.new("Figure me out!?!")
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Fog
|
2
|
+
class Slicehost
|
3
|
+
|
4
|
+
def flavors
|
5
|
+
Fog::Slicehost::Flavors.new(:connection => self)
|
6
|
+
end
|
7
|
+
|
8
|
+
class Flavors < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Slicehost::Flavor
|
11
|
+
|
12
|
+
def all
|
13
|
+
if @loaded
|
14
|
+
clear
|
15
|
+
end
|
16
|
+
@loaded = true
|
17
|
+
data = connection.get_flavors.body
|
18
|
+
for flavor in data['flavors']
|
19
|
+
self << new(flavor)
|
20
|
+
end
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(flavor_id)
|
25
|
+
connection.get_flavor(flavor_id)
|
26
|
+
rescue Excon::Errors::Forbidden
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Fog
|
2
|
+
class Slicehost
|
3
|
+
|
4
|
+
def images(attributes = {})
|
5
|
+
Fog::Slicehost::Images.new({
|
6
|
+
:connection => self
|
7
|
+
}.merge!(attributes))
|
8
|
+
end
|
9
|
+
|
10
|
+
class Images < Fog::Collection
|
11
|
+
|
12
|
+
model Fog::Slicehost::Image
|
13
|
+
|
14
|
+
def all
|
15
|
+
if @loaded
|
16
|
+
clear
|
17
|
+
end
|
18
|
+
@loaded = true
|
19
|
+
data = connection.get_images.body
|
20
|
+
for image in data['images']
|
21
|
+
self << new(image)
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
def get(image_id)
|
27
|
+
connection.get_image(image_id)
|
28
|
+
rescue Excon::Errors::Forbidden
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Fog
|
2
|
+
class Slicehost
|
3
|
+
|
4
|
+
class Server < Fog::Model
|
5
|
+
|
6
|
+
identity :id
|
7
|
+
|
8
|
+
attribute :addresses
|
9
|
+
attribute :backup_id, 'backup-id'
|
10
|
+
attribute :bandwidth_in, 'bw-in'
|
11
|
+
attribute :bandwidth_out, 'bw-out'
|
12
|
+
attribute :flavor_id, 'flavor-id'
|
13
|
+
attribute :image_id, 'image-id'
|
14
|
+
attribute :name
|
15
|
+
attribute :password, 'root-password'
|
16
|
+
attribute :progress
|
17
|
+
attribute :status
|
18
|
+
|
19
|
+
def destroy
|
20
|
+
requires :id
|
21
|
+
connection.delete_slice(@id)
|
22
|
+
true
|
23
|
+
end
|
24
|
+
|
25
|
+
def flavor
|
26
|
+
requires :flavor_id
|
27
|
+
connection.flavors.get(@flavor_id)
|
28
|
+
end
|
29
|
+
|
30
|
+
def image
|
31
|
+
requires :image_id
|
32
|
+
connection.images.get(@image_id)
|
33
|
+
end
|
34
|
+
|
35
|
+
def ready?
|
36
|
+
@status == 'active'
|
37
|
+
end
|
38
|
+
|
39
|
+
def reboot(type = 'SOFT')
|
40
|
+
requires :id
|
41
|
+
connection.reboot_server(@id, type)
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
def save
|
46
|
+
requires :flavor_id, :image_id, :name
|
47
|
+
data = connection.create_slice(@flavor_id, @image_id, @name)
|
48
|
+
merge_attributes(data.body)
|
49
|
+
true
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Fog
|
2
|
+
class Slicehost
|
3
|
+
|
4
|
+
def servers
|
5
|
+
Fog::Slicehost::Servers.new(:connection => self)
|
6
|
+
end
|
7
|
+
|
8
|
+
class Servers < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Slicehost::Server
|
11
|
+
|
12
|
+
def all
|
13
|
+
if @loaded
|
14
|
+
clear
|
15
|
+
end
|
16
|
+
@loaded = true
|
17
|
+
data = connection.get_slices.body['slices']
|
18
|
+
for server in data
|
19
|
+
self << new(server)
|
20
|
+
end
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(server_id)
|
25
|
+
if server_id && server = connection.get_slice(server_id).body
|
26
|
+
new(server)
|
27
|
+
elsif !server_id
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
rescue Excon::Errors::Forbidden
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Slicehost
|
4
|
+
|
5
|
+
class GetFlavor < Fog::Parsers::Base
|
6
|
+
|
7
|
+
def reset
|
8
|
+
@response = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'id', 'price', 'ram'
|
14
|
+
@response[name] = @value.to_i
|
15
|
+
when 'name'
|
16
|
+
@response[name] = @value
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Slicehost
|
4
|
+
|
5
|
+
class GetImage < Fog::Parsers::Base
|
6
|
+
|
7
|
+
def reset
|
8
|
+
@response = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'id'
|
14
|
+
@response[name] = @value.to_i
|
15
|
+
when 'name'
|
16
|
+
@response[name] = @value
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Slicehost
|
4
|
+
|
5
|
+
class GetSlice < Fog::Parsers::Base
|
6
|
+
|
7
|
+
def reset
|
8
|
+
@response = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'address'
|
14
|
+
@response['addresses'] ||= []
|
15
|
+
@response['addresses'] << @value
|
16
|
+
when 'backup-id', 'flavor-id', 'id', 'image-id', 'progress'
|
17
|
+
@response[name] = @value.to_i
|
18
|
+
when 'bw-in', 'bw-out'
|
19
|
+
@response[name] = @value.to_f
|
20
|
+
when 'name', 'status'
|
21
|
+
@response[name] = @value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|