fog 0.3.31 → 0.3.32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. data/.document +3 -0
  2. data/.gitignore +10 -0
  3. data/Gemfile.lock +1 -4
  4. data/README.rdoc +29 -37
  5. data/Rakefile +5 -25
  6. data/bin/fog +1 -3
  7. data/examples/dns_methods.rb +389 -0
  8. data/examples/storage.rb +103 -0
  9. data/fog.gemspec +4 -778
  10. data/lib/fog.rb +5 -66
  11. data/lib/fog/aws.rb +3 -0
  12. data/lib/fog/aws/bin.rb +7 -2
  13. data/lib/fog/aws/cdn.rb +2 -2
  14. data/lib/fog/aws/compute.rb +2 -2
  15. data/lib/fog/aws/dns.rb +101 -0
  16. data/lib/fog/aws/elb.rb +2 -2
  17. data/lib/fog/aws/iam.rb +2 -2
  18. data/lib/fog/aws/models/compute/image.rb +1 -0
  19. data/lib/fog/aws/models/compute/server.rb +1 -1
  20. data/lib/fog/aws/models/compute/servers.rb +1 -13
  21. data/lib/fog/aws/parsers/compute/describe_images.rb +36 -34
  22. data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +26 -0
  23. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +55 -0
  24. data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +25 -0
  25. data/lib/fog/aws/parsers/dns/get_change.rb +26 -0
  26. data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +43 -0
  27. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +35 -0
  28. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +46 -0
  29. data/lib/fog/aws/requests/compute/describe_images.rb +1 -0
  30. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +90 -0
  31. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +68 -0
  32. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +48 -0
  33. data/lib/fog/aws/requests/dns/get_change.rb +47 -0
  34. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +51 -0
  35. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +63 -0
  36. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +68 -0
  37. data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
  38. data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
  39. data/lib/fog/aws/requests/storage/sync_clock.rb +28 -0
  40. data/lib/fog/aws/simpledb.rb +2 -2
  41. data/lib/fog/aws/storage.rb +5 -3
  42. data/lib/fog/bluebox.rb +2 -0
  43. data/lib/fog/bluebox/compute.rb +2 -2
  44. data/lib/fog/brightbox.rb +2 -0
  45. data/lib/fog/brightbox/compute.rb +2 -2
  46. data/lib/fog/core.rb +21 -1
  47. data/lib/fog/core/bin.rb +3 -1
  48. data/lib/fog/core/compute.rb +1 -0
  49. data/lib/fog/core/credentials.rb +72 -50
  50. data/lib/fog/core/deprecation.rb +11 -5
  51. data/lib/fog/core/mock.rb +34 -0
  52. data/lib/fog/core/model.rb +9 -1
  53. data/lib/fog/core/service.rb +40 -26
  54. data/lib/fog/core/storage.rb +1 -0
  55. data/lib/fog/core/time.rb +21 -0
  56. data/lib/fog/core/wait_for.rb +17 -0
  57. data/lib/fog/go_grid.rb +2 -0
  58. data/lib/fog/go_grid/compute.rb +2 -2
  59. data/lib/fog/google.rb +2 -0
  60. data/lib/fog/google/requests/storage/get_bucket.rb +6 -5
  61. data/lib/fog/google/requests/storage/get_object_url.rb +4 -4
  62. data/lib/fog/google/requests/storage/put_object_url.rb +4 -4
  63. data/lib/fog/google/storage.rb +4 -3
  64. data/lib/fog/linode.rb +3 -0
  65. data/lib/fog/linode/bin.rb +5 -3
  66. data/lib/fog/linode/compute.rb +6 -2
  67. data/lib/fog/linode/dns.rb +80 -0
  68. data/lib/fog/linode/requests/dns/domain_create.rb +52 -0
  69. data/lib/fog/linode/requests/dns/domain_delete.rb +35 -0
  70. data/lib/fog/linode/requests/dns/domain_list.rb +50 -0
  71. data/lib/fog/linode/requests/dns/domain_resource_create.rb +53 -0
  72. data/lib/fog/linode/requests/dns/domain_resource_delete.rb +36 -0
  73. data/lib/fog/linode/requests/dns/domain_resource_list.rb +48 -0
  74. data/lib/fog/linode/requests/dns/domain_resource_update.rb +54 -0
  75. data/lib/fog/linode/requests/dns/domain_update.rb +48 -0
  76. data/lib/fog/local.rb +2 -0
  77. data/lib/fog/local/storage.rb +3 -3
  78. data/lib/fog/new_servers.rb +2 -0
  79. data/lib/fog/new_servers/compute.rb +2 -2
  80. data/lib/fog/rackspace.rb +2 -0
  81. data/lib/fog/rackspace/cdn.rb +2 -2
  82. data/lib/fog/rackspace/compute.rb +2 -2
  83. data/lib/fog/rackspace/storage.rb +2 -2
  84. data/lib/fog/slicehost.rb +3 -0
  85. data/lib/fog/slicehost/bin.rb +2 -0
  86. data/lib/fog/slicehost/compute.rb +2 -2
  87. data/lib/fog/slicehost/dns.rb +84 -0
  88. data/lib/fog/slicehost/parsers/dns/create_record.rb +26 -0
  89. data/lib/fog/slicehost/parsers/dns/create_zone.rb +26 -0
  90. data/lib/fog/slicehost/parsers/dns/get_record.rb +26 -0
  91. data/lib/fog/slicehost/parsers/dns/get_records.rb +30 -0
  92. data/lib/fog/slicehost/parsers/dns/get_zone.rb +26 -0
  93. data/lib/fog/slicehost/parsers/dns/get_zones.rb +30 -0
  94. data/lib/fog/slicehost/requests/compute/create_slice.rb +2 -2
  95. data/lib/fog/slicehost/requests/compute/delete_slice.rb +3 -17
  96. data/lib/fog/slicehost/requests/dns/create_record.rb +61 -0
  97. data/lib/fog/slicehost/requests/dns/create_zone.rb +54 -0
  98. data/lib/fog/slicehost/requests/dns/delete_record.rb +31 -0
  99. data/lib/fog/slicehost/requests/dns/delete_zone.rb +31 -0
  100. data/lib/fog/slicehost/requests/dns/get_record.rb +40 -0
  101. data/lib/fog/slicehost/requests/dns/get_records.rb +41 -0
  102. data/lib/fog/slicehost/requests/dns/get_zone.rb +40 -0
  103. data/lib/fog/slicehost/requests/dns/get_zones.rb +38 -0
  104. data/lib/fog/terremark.rb +2 -0
  105. data/lib/fog/terremark/ecloud.rb +2 -4
  106. data/lib/fog/vcloud.rb +4 -2
  107. data/lib/fog/vcloud/bin.rb +3 -1
  108. data/lib/fog/vcloud/mock_data_classes.rb +77 -11
  109. data/lib/fog/vcloud/terremark/ecloud.rb +22 -7
  110. data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_service.rb +60 -0
  111. data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_services.rb +36 -0
  112. data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +28 -13
  113. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +2 -2
  114. data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +1 -1
  115. data/lib/fog/vcloud/terremark/ecloud/models/network.rb +4 -1
  116. data/lib/fog/vcloud/terremark/ecloud/models/server.rb +5 -5
  117. data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +6 -2
  118. data/lib/fog/vcloud/terremark/ecloud/requests/add_backup_internet_service.rb +111 -0
  119. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +2 -4
  120. data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +1 -3
  121. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +39 -27
  122. data/lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb +1 -2
  123. data/lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb +21 -6
  124. data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +2 -1
  125. data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +34 -17
  126. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +12 -10
  127. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +15 -10
  128. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +1 -12
  129. data/lib/fog/zerigo.rb +15 -0
  130. data/lib/fog/zerigo/bin.rb +25 -0
  131. data/lib/fog/zerigo/dns.rb +96 -0
  132. data/lib/fog/zerigo/parsers/dns/count_hosts.rb +24 -0
  133. data/lib/fog/zerigo/parsers/dns/count_zones.rb +24 -0
  134. data/lib/fog/zerigo/parsers/dns/create_host.rb +26 -0
  135. data/lib/fog/zerigo/parsers/dns/create_zone.rb +26 -0
  136. data/lib/fog/zerigo/parsers/dns/find_hosts.rb +30 -0
  137. data/lib/fog/zerigo/parsers/dns/get_host.rb +26 -0
  138. data/lib/fog/zerigo/parsers/dns/get_zone.rb +56 -0
  139. data/lib/fog/zerigo/parsers/dns/get_zone_stats.rb +26 -0
  140. data/lib/fog/zerigo/parsers/dns/list_hosts.rb +30 -0
  141. data/lib/fog/zerigo/parsers/dns/list_zones.rb +30 -0
  142. data/lib/fog/zerigo/requests/dns/count_hosts.rb +36 -0
  143. data/lib/fog/zerigo/requests/dns/count_zones.rb +36 -0
  144. data/lib/fog/zerigo/requests/dns/create_host.rb +70 -0
  145. data/lib/fog/zerigo/requests/dns/create_zone.rb +97 -0
  146. data/lib/fog/zerigo/requests/dns/delete_host.rb +32 -0
  147. data/lib/fog/zerigo/requests/dns/delete_zone.rb +33 -0
  148. data/lib/fog/zerigo/requests/dns/find_hosts.rb +63 -0
  149. data/lib/fog/zerigo/requests/dns/get_host.rb +47 -0
  150. data/lib/fog/zerigo/requests/dns/get_zone.rb +57 -0
  151. data/lib/fog/zerigo/requests/dns/get_zone_stats.rb +44 -0
  152. data/lib/fog/zerigo/requests/dns/list_hosts.rb +48 -0
  153. data/lib/fog/zerigo/requests/dns/list_zones.rb +53 -0
  154. data/lib/fog/zerigo/requests/dns/update_host.rb +60 -0
  155. data/lib/fog/zerigo/requests/dns/update_zone.rb +78 -0
  156. data/spec/spec_helper.rb +0 -5
  157. data/spec/vcloud/spec_helper.rb +3 -2
  158. data/spec/vcloud/terremark/ecloud/models/backup_internet_service_spec.rb +49 -0
  159. data/spec/vcloud/terremark/ecloud/models/backup_internet_services_spec.rb +29 -0
  160. data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +32 -13
  161. data/spec/vcloud/terremark/ecloud/models/network_spec.rb +7 -4
  162. data/spec/vcloud/terremark/ecloud/models/server_spec.rb +20 -0
  163. data/spec/vcloud/terremark/ecloud/requests/add_backup_internet_service_spec.rb +60 -0
  164. data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +3 -0
  165. data/spec/vcloud/terremark/ecloud/requests/configure_network_ip_spec.rb +55 -0
  166. data/spec/vcloud/terremark/ecloud/requests/delete_vapp_spec.rb +9 -0
  167. data/spec/vcloud/terremark/ecloud/requests/get_internet_services_spec.rb +60 -14
  168. data/spec/vcloud/terremark/ecloud/requests/get_network_ip_spec.rb +2 -0
  169. data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +3 -3
  170. data/tests/aws/requests/compute/image_tests.rb +15 -14
  171. data/tests/aws/requests/dns/dns_tests.rb +276 -0
  172. data/tests/brightbox/requests/compute/account_tests.rb +20 -9
  173. data/tests/brightbox/requests/compute/api_client_tests.rb +12 -4
  174. data/tests/brightbox/requests/compute/cloud_ip_tests.rb +20 -6
  175. data/tests/brightbox/requests/compute/image_tests.rb +9 -4
  176. data/tests/brightbox/requests/compute/interface_tests.rb +8 -2
  177. data/tests/brightbox/requests/compute/server_tests.rb +17 -5
  178. data/tests/brightbox/requests/compute/server_type_tests.rb +8 -4
  179. data/tests/brightbox/requests/compute/user_tests.rb +13 -5
  180. data/tests/brightbox/requests/compute/zone_tests.rb +8 -4
  181. data/tests/core/attribute_tests.rb +45 -0
  182. data/tests/helper.rb +0 -2
  183. data/tests/linode/requests/dns/dns_tests.rb +262 -0
  184. data/tests/rackspace/requests/compute/address_tests.rb +1 -1
  185. data/tests/rackspace/requests/compute/image_tests.rb +1 -1
  186. data/tests/slicehost/requests/dns_tests/dns_tests.rb +279 -0
  187. data/tests/zerigo/helper.rb +0 -0
  188. data/tests/zerigo/requests/dns/dns_tests.rb +374 -0
  189. metadata +280 -36
  190. data/spec/compact_progress_bar_formatter.rb +0 -195
  191. data/spec/core/attributes_spec.rb +0 -52
  192. data/spec/lorem.txt +0 -1
@@ -2,8 +2,8 @@ module Fog
2
2
  module Rackspace
3
3
  class Compute < Fog::Service
4
4
 
5
- requires :rackspace_api_key, :rackspace_username, &inject_parameter_specs
6
- recognizes :rackspace_auth_url, :persistent, &inject_parameter_specs
5
+ requires :rackspace_api_key, :rackspace_username
6
+ recognizes :rackspace_auth_url, :persistent
7
7
 
8
8
  model_path 'fog/rackspace/models/compute'
9
9
  model :flavor
@@ -2,8 +2,8 @@ module Fog
2
2
  module Rackspace
3
3
  class Storage < Fog::Service
4
4
 
5
- requires :rackspace_api_key, :rackspace_username, &inject_parameter_specs
6
- recognizes :rackspace_auth_url, :persistent, &inject_parameter_specs
5
+ requires :rackspace_api_key, :rackspace_username
6
+ recognizes :rackspace_auth_url, :persistent
7
7
 
8
8
  model_path 'fog/rackspace/models/storage'
9
9
  model :directory
@@ -1,4 +1,6 @@
1
1
  require 'nokogiri'
2
+
3
+ require File.join(File.dirname(__FILE__), 'core')
2
4
  require 'fog/core/parser'
3
5
 
4
6
  module Fog
@@ -8,6 +10,7 @@ module Fog
8
10
 
9
11
  service_path 'fog/slicehost'
10
12
  service :compute
13
+ service :dns
11
14
 
12
15
  def self.new(attributes = {})
13
16
  location = caller.first
@@ -5,6 +5,8 @@ class Slicehost < Fog::Bin
5
5
  case key
6
6
  when :compute, :slices
7
7
  Fog::Slicehost::Compute
8
+ when :dns
9
+ Fog::Slicehost::DNS
8
10
  else
9
11
  raise ArgumentError, "Unrecognized service: #{key}"
10
12
  end
@@ -2,8 +2,8 @@ module Fog
2
2
  module Slicehost
3
3
  class Compute < Fog::Service
4
4
 
5
- requires :slicehost_password, &inject_parameter_specs
6
- recognizes :host, :port, :scheme, :persistent, &inject_parameter_specs
5
+ requires :slicehost_password
6
+ recognizes :host, :port, :scheme, :persistent
7
7
 
8
8
  model_path 'fog/slicehost/models/compute'
9
9
  model :flavor
@@ -0,0 +1,84 @@
1
+ module Fog
2
+ module Slicehost
3
+ class DNS < Fog::Service
4
+
5
+ requires :slicehost_password
6
+ recognizes :host, :port, :scheme, :persistent
7
+
8
+ model_path 'fog/slicehost/models/dns'
9
+
10
+ request_path 'fog/slicehost/requests/dns'
11
+ request :create_record
12
+ request :create_zone
13
+ request :delete_record
14
+ request :delete_zone
15
+ request :get_record
16
+ request :get_records
17
+ request :get_zone
18
+ request :get_zones
19
+
20
+ class Mock
21
+
22
+ def self.data
23
+ @data ||= Hash.new do |hash, key|
24
+ hash[key] = {}
25
+ end
26
+ end
27
+
28
+ def self.reset_data(keys=data.keys)
29
+ for key in [*keys]
30
+ data.delete(key)
31
+ end
32
+ end
33
+
34
+ def initialize(options={})
35
+ @slicehost_password = options[:slicehost_password]
36
+ @data = self.class.data[@slicehost_password]
37
+ end
38
+
39
+ end
40
+
41
+ class Real
42
+
43
+ def initialize(options={})
44
+ @slicehost_password = options[:slicehost_password]
45
+ @host = options[:host] || "api.slicehost.com"
46
+ @port = options[:port] || 443
47
+ @scheme = options[:scheme] || 'https'
48
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
49
+ end
50
+
51
+ def reload
52
+ @connection.reset
53
+ end
54
+
55
+ def request(params)
56
+ params[:headers] ||= {}
57
+ params[:headers].merge!({
58
+ 'Authorization' => "Basic #{Base64.encode64(@slicehost_password).delete("\r\n")}"
59
+ })
60
+ case params[:method]
61
+ when 'DELETE', 'GET', 'HEAD'
62
+ params[:headers]['Accept'] = 'application/xml'
63
+ when 'POST', 'PUT'
64
+ params[:headers]['Content-Type'] = 'application/xml'
65
+ end
66
+
67
+ begin
68
+ response = @connection.request(params.merge!({:host => @host}))
69
+ rescue Excon::Errors::HTTPStatusError => error
70
+ raise case error
71
+ when Excon::Errors::NotFound
72
+ Fog::Slicehost::DNS::NotFound.slurp(error)
73
+ else
74
+ error
75
+ end
76
+ end
77
+
78
+ response
79
+ end
80
+
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module Slicehost
4
+ module DNS
5
+
6
+ class CreateRecord < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {}
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'zone-id', 'ttl', 'id'
15
+ @response[name] = @value.to_i
16
+ when 'record-type', 'name', 'data', 'active', 'aux'
17
+ @response[name] = @value
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module Slicehost
4
+ module DNS
5
+
6
+ class CreateZone < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {}
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'ttl', 'id'
15
+ @response[name] = @value.to_i
16
+ when 'origin', 'active'
17
+ @response[name] = @value
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module Slicehost
4
+ module DNS
5
+
6
+ class GetRecord < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { }
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'zone-id', 'ttl'
15
+ @response[name] = @value.to_i
16
+ when 'record-type', 'name', 'data', 'active', 'aux'
17
+ @response[name] = @value
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module Slicehost
4
+ module DNS
5
+
6
+ class GetRecords < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @record = {}
10
+ @response = { 'records' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'zone-id', 'ttl'
16
+ @record[name] = @value.to_i
17
+ when 'record-type', 'name', 'data', 'active', 'aux'
18
+ @record[name] = @value
19
+ when 'record'
20
+ @response['records'] << @record
21
+ @record = {}
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module Slicehost
4
+ module DNS
5
+
6
+ class GetZone < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {}
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'ttl', 'id'
15
+ @response[name] = @value.to_i
16
+ when 'origin', 'active'
17
+ @response[name] = @value
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module Slicehost
4
+ module DNS
5
+
6
+ class GetZones < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @zone = {}
10
+ @response = { 'zones' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'ttl', 'id'
16
+ @zone[name] = @value.to_i
17
+ when 'active', 'origin'
18
+ @zone[name] = @value
19
+ when 'zone'
20
+ @response['zones'] << @zone
21
+ @zone = {}
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -5,7 +5,7 @@ module Fog
5
5
 
6
6
  require 'fog/slicehost/parsers/compute/create_slice'
7
7
 
8
- # Get list of slices
8
+ # Create a new slice
9
9
  # ==== Parameters
10
10
  # * flavor_id<~Integer> - Id of flavor to create slice with
11
11
  # * image_id<~Integer> - Id of image to create slice with
@@ -13,7 +13,7 @@ module Fog
13
13
  #
14
14
  # ==== Returns
15
15
  # * response<~Excon::Response>:
16
- # * body<~Array>:
16
+ # * body<~Hash>:
17
17
  # * 'addresses'<~Array> - Ip addresses for the slice
18
18
  # * 'backup-id'<~Integer> - Id of backup slice was booted from
19
19
  # * 'bw-in'<~Integer> - Incoming bandwidth total for current billing cycle, in Gigabytes
@@ -3,26 +3,12 @@ module Fog
3
3
  class Compute
4
4
  class Real
5
5
 
6
- # Get list of slices
6
+ # Delete a given slice
7
7
  # ==== Parameters
8
- # * flavor_id<~Integer> - Id of flavor to create slice with
9
- # * image_id<~Integer> - Id of image to create slice with
10
- # * name<~String> - Name of slice
8
+ # * slice_id<~Integer> - Id of slice to delete
11
9
  #
12
10
  # ==== Returns
13
- # * response<~Excon::Response>:
14
- # * body<~Array>:
15
- # * 'addresses'<~Array> - Ip addresses for the slice
16
- # * 'backup-id'<~Integer> - Id of backup slice was booted from
17
- # * 'bw-in'<~Integer> - Incoming bandwidth total for current billing cycle, in Gigabytes
18
- # * 'bw-out'<~Integer> - Outgoing bandwidth total for current billing cycle, in Gigabytes
19
- # * 'flavor-id'<~Integer> - Id of flavor slice was booted from
20
- # * 'id'<~Integer> - Id of the slice
21
- # * 'image-id'<~Integer> - Id of image slice was booted from
22
- # * 'name'<~String> - Name of the slice
23
- # * 'progress'<~Integer> - Progress of current action, in percentage
24
- # * 'root-password'<~String> - Root password of slice
25
- # * 'status'<~String> - Current status of the slice
11
+ # * response<~Excon::Response>: - HTTP status code is the return value
26
12
  def delete_slice(slice_id)
27
13
  request(
28
14
  :expects => 200,
@@ -0,0 +1,61 @@
1
+ module Fog
2
+ module Slicehost
3
+ class DNS
4
+ class Real
5
+
6
+ require 'fog/slicehost/parsers/dns/create_record'
7
+
8
+ # Create a new record in a DNS zone - or update an existing one
9
+ # ==== Parameters
10
+ # * record_type<~String> - type of DNS record to create (A, CNAME, etc)
11
+ # * zone_id<~Integer> - ID of the zone to update
12
+ # * name<~String> - host name this DNS record is for
13
+ # * data<~String> - data for the DNS record (ie for an A record, the IP address)
14
+ # * options<~Hash> - extra parameters that are not mandatory
15
+ # * ttl<~Integer> - time to live in seconds
16
+ # * active<~String> - whether this record is active or not ('Y' or 'N')
17
+ # * aux<~String> - extra data required by the record
18
+ # ==== Returns
19
+ # * response<~Excon::Response>:
20
+ # * body<~Hash>:
21
+ # * 'name'<~String> - as above
22
+ # * 'id'<~Integer> - Id of zone/domain - used in future API calls for this zone
23
+ # * 'ttl'<~Integer> - as above
24
+ # * 'data'<~String> - as above
25
+ # * 'active'<~String> - as above
26
+ # * 'aux'<~String> - as above
27
+ def create_record( record_type, zone_id, name, data, options = {})
28
+
29
+ optional_tags= ''
30
+ options.each { |option, value|
31
+ case option
32
+ when :ttl
33
+ optional_tags+= "<ttl type='integer'>#{value}</ttl>"
34
+ when :active
35
+ optional_tags+= "<active>#{value}</active>"
36
+ when :aux
37
+ optional_tags+= "<aux>#{value}</aux>"
38
+ end
39
+ }
40
+
41
+ request(
42
+ :body => %Q{<?xml version="1.0" encoding="UTF-8"?><record><record_type>#{record_type}</record_type><zone_id type="integer">#{zone_id}</zone_id><name>#{name}</name><data>#{data}</data>#{optional_tags}</record>},
43
+ :expects => 201,
44
+ :method => 'POST',
45
+ :parser => Fog::Parsers::Slicehost::DNS::CreateRecord.new,
46
+ :path => 'records.xml'
47
+ )
48
+ end
49
+
50
+ end
51
+
52
+ class Mock
53
+
54
+ def create_record( record_type, zone_id, name, data)
55
+ Fog::Mock.not_implemented
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,54 @@
1
+ module Fog
2
+ module Slicehost
3
+ class DNS
4
+ class Real
5
+
6
+ require 'fog/slicehost/parsers/dns/create_zone'
7
+
8
+ # Create a new zone for Slicehost's DNS servers to serve/host
9
+ # ==== Parameters
10
+ # * origin<~String> - domain name to host (ie example.com)
11
+ # * options<~Hash> - optional paramaters
12
+ # * ttl<~Integer> - TimeToLive (ttl) for the domain, in seconds (> 60)
13
+ # * active<~String> - whether zone is active in Slicehost DNS server - 'Y' or 'N'
14
+ #
15
+ # ==== Returns
16
+ # * response<~Excon::Response>:
17
+ # * body<~Hash>:
18
+ # * 'origin'<~String> - as above
19
+ # * 'id'<~Integer> - Id of zone/domain - used in future API calls
20
+ # * 'ttl'<~Integer> - as above
21
+ # * 'active'<~String> - as above
22
+ def create_zone(origin, options = {})
23
+
24
+ optional_tags= ''
25
+ options.each { |option, value|
26
+ case option
27
+ when :ttl
28
+ optional_tags+= "<ttl type='interger'>#{value}</ttl>"
29
+ when :active
30
+ optional_tags+= "<active>#{value}</active>"
31
+ end
32
+ }
33
+
34
+ request(
35
+ :body => %Q{<?xml version="1.0" encoding="UTF-8"?><zone><origin>#{origin}</origin>#{optional_tags}</zone>},
36
+ :expects => 201,
37
+ :method => 'POST',
38
+ :parser => Fog::Parsers::Slicehost::DNS::CreateZone.new,
39
+ :path => 'zones.xml'
40
+ )
41
+ end
42
+
43
+ end
44
+
45
+ class Mock
46
+
47
+ def create_zone(origin, ttl, active)
48
+ Fog::Mock.not_implemented
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end