fog 0.3.31 → 0.3.32

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 (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