fog 0.3.34 → 0.4.0

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 (200) hide show
  1. data/Gemfile.lock +6 -6
  2. data/README.rdoc +26 -7
  3. data/Rakefile +7 -1
  4. data/examples/dns_tests.rb +76 -0
  5. data/examples/{storage.rb → storage_tests.rb} +15 -15
  6. data/fog.gemspec +4 -4
  7. data/lib/fog.rb +1 -1
  8. data/lib/fog/aws.rb +19 -54
  9. data/lib/fog/aws/dns.rb +5 -1
  10. data/lib/fog/aws/models/compute/security_group.rb +128 -0
  11. data/lib/fog/aws/models/dns/record.rb +64 -0
  12. data/lib/fog/aws/models/dns/records.rb +47 -0
  13. data/lib/fog/aws/models/dns/zone.rb +53 -0
  14. data/lib/fog/aws/models/dns/zones.rb +33 -0
  15. data/lib/fog/aws/models/storage/file.rb +14 -2
  16. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +1 -1
  17. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +3 -1
  18. data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -0
  19. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +0 -2
  20. data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -0
  21. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +1 -0
  22. data/lib/fog/aws/requests/simpledb/get_attributes.rb +1 -0
  23. data/lib/fog/aws/requests/simpledb/list_domains.rb +3 -2
  24. data/lib/fog/aws/requests/simpledb/put_attributes.rb +2 -2
  25. data/lib/fog/aws/requests/simpledb/select.rb +1 -0
  26. data/lib/fog/brightbox/compute.rb +9 -0
  27. data/lib/fog/brightbox/models/compute/load_balancer.rb +50 -0
  28. data/lib/fog/brightbox/models/compute/load_balancers.rb +28 -0
  29. data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +28 -0
  30. data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +27 -0
  31. data/lib/fog/brightbox/requests/compute/destroy_load_balancer.rb +28 -0
  32. data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +28 -0
  33. data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +27 -0
  34. data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +28 -0
  35. data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +29 -0
  36. data/lib/fog/core.rb +1 -0
  37. data/lib/fog/core/dns.rb +25 -0
  38. data/lib/fog/core/mock.rb +34 -0
  39. data/lib/fog/google/models/storage/file.rb +14 -2
  40. data/lib/fog/linode/dns.rb +4 -0
  41. data/lib/fog/linode/models/dns/record.rb +69 -0
  42. data/lib/fog/linode/models/dns/records.rb +37 -0
  43. data/lib/fog/linode/models/dns/zone.rb +84 -0
  44. data/lib/fog/linode/models/dns/zones.rb +29 -0
  45. data/lib/fog/linode/requests/dns/domain_create.rb +2 -3
  46. data/lib/fog/linode/requests/dns/domain_resource_create.rb +3 -4
  47. data/lib/fog/linode/requests/dns/domain_resource_list.rb +5 -2
  48. data/lib/fog/linode/requests/dns/domain_resource_update.rb +2 -2
  49. data/lib/fog/linode/requests/dns/domain_update.rb +2 -2
  50. data/lib/fog/rackspace/requests/compute/create_image.rb +1 -1
  51. data/lib/fog/rackspace/requests/compute/create_server.rb +1 -1
  52. data/lib/fog/rackspace/requests/compute/get_flavor_details.rb +19 -1
  53. data/lib/fog/rackspace/requests/compute/list_flavors.rb +14 -1
  54. data/lib/fog/rackspace/requests/compute/list_flavors_detail.rb +14 -1
  55. data/lib/fog/slicehost/bin.rb +1 -1
  56. data/lib/fog/slicehost/dns.rb +4 -0
  57. data/lib/fog/slicehost/models/dns/record.rb +66 -0
  58. data/lib/fog/slicehost/models/dns/records.rb +36 -0
  59. data/lib/fog/slicehost/models/dns/zone.rb +69 -0
  60. data/lib/fog/slicehost/models/dns/zones.rb +28 -0
  61. data/lib/fog/slicehost/requests/dns/create_record.rb +2 -3
  62. data/lib/fog/slicehost/requests/dns/get_record.rb +1 -1
  63. data/lib/fog/vcloud/terremark/ecloud.rb +1 -1
  64. data/lib/fog/zerigo/models/dns/record.rb +14 -3
  65. data/lib/fog/zerigo/models/dns/records.rb +1 -1
  66. data/lib/fog/zerigo/models/dns/zone.rb +7 -1
  67. data/lib/fog/zerigo/models/dns/zones.rb +1 -1
  68. data/spec/spec_helper.rb +0 -24
  69. data/tests/aws/requests/iam/helper.rb +15 -0
  70. data/tests/aws/requests/simpledb/attributes_tests.rb +75 -0
  71. data/tests/aws/requests/simpledb/domain_tests.rb +51 -0
  72. data/tests/aws/requests/simpledb/helper.rb +16 -0
  73. data/tests/compute/helper.rb +36 -0
  74. data/tests/compute/models/flavors_tests.rb +9 -0
  75. data/tests/compute/models/server_tests.rb +9 -0
  76. data/tests/compute/models/servers_tests.rb +9 -0
  77. data/tests/{aws/requests/compute → compute/requests/aws}/address_tests.rb +0 -0
  78. data/tests/{aws/requests/compute → compute/requests/aws}/availability_zone_tests.rb +0 -0
  79. data/tests/{aws → compute/requests/aws}/helper.rb +0 -12
  80. data/tests/{aws/requests/compute → compute/requests/aws}/image_tests.rb +0 -0
  81. data/tests/{aws/requests/compute → compute/requests/aws}/instance_tests.rb +0 -0
  82. data/tests/{aws/requests/compute → compute/requests/aws}/key_pair_tests.rb +0 -0
  83. data/tests/{aws/requests/compute → compute/requests/aws}/region_tests.rb +0 -0
  84. data/tests/{aws/requests/compute → compute/requests/aws}/security_group_tests.rb +0 -0
  85. data/tests/{aws/requests/compute → compute/requests/aws}/snapshot_tests.rb +0 -0
  86. data/tests/{aws/requests/compute → compute/requests/aws}/tag_tests.rb +0 -0
  87. data/tests/{aws/requests/compute → compute/requests/aws}/volume_tests.rb +0 -0
  88. data/tests/{bluebox/requests/compute → compute/requests/bluebox}/block_tests.rb +0 -0
  89. data/tests/{bluebox → compute/requests/bluebox}/helper.rb +0 -0
  90. data/tests/{bluebox/requests/compute → compute/requests/bluebox}/product_tests.rb +0 -0
  91. data/tests/{bluebox/requests/compute → compute/requests/bluebox}/template_tests.rb +0 -0
  92. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/account_tests.rb +0 -0
  93. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/api_client_tests.rb +0 -0
  94. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/cloud_ip_tests.rb +15 -7
  95. data/tests/{brightbox → compute/requests/brightbox}/helper.rb +68 -22
  96. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/image_tests.rb +0 -0
  97. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/interface_tests.rb +0 -0
  98. data/tests/compute/requests/brightbox/load_balancer_tests.rb +74 -0
  99. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/server_tests.rb +1 -0
  100. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/server_type_tests.rb +1 -0
  101. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/user_tests.rb +0 -0
  102. data/tests/{brightbox/requests/compute → compute/requests/brightbox}/zone_tests.rb +1 -0
  103. data/tests/{go_grid/requests/compute → compute/requests/go_grid}/image_tests.rb +0 -0
  104. data/tests/{linode/requests/compute → compute/requests/linode}/datacenter_tests.rb +0 -0
  105. data/tests/{linode/requests/compute → compute/requests/linode}/distribution_tests.rb +0 -0
  106. data/tests/{linode → compute/requests/linode}/helper.rb +0 -0
  107. data/tests/{linode/requests/compute → compute/requests/linode}/linode_tests.rb +0 -0
  108. data/tests/{linode/requests/compute → compute/requests/linode}/linodeplans_tests.rb +0 -0
  109. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/address_tests.rb +0 -0
  110. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/flavor_tests.rb +0 -0
  111. data/tests/{rackspace → compute/requests/rackspace}/helper.rb +0 -0
  112. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/image_tests.rb +7 -9
  113. data/tests/compute/requests/rackspace/resize_tests.rb +33 -0
  114. data/tests/{rackspace/requests/compute → compute/requests/rackspace}/server_tests.rb +0 -0
  115. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/backup_tests.rb +0 -0
  116. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/flavor_tests.rb +0 -0
  117. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/image_tests.rb +0 -0
  118. data/tests/{slicehost/requests/compute → compute/requests/slicehost}/slice_tests.rb +0 -0
  119. data/tests/dns/helper.rb +19 -0
  120. data/tests/dns/models/record_tests.rb +25 -0
  121. data/tests/dns/models/records_tests.rb +25 -0
  122. data/tests/dns/models/zone_tests.rb +13 -0
  123. data/tests/dns/models/zones_tests.rb +13 -0
  124. data/tests/{aws/requests/dns → dns/requests/aws}/dns_tests.rb +0 -0
  125. data/tests/{linode/requests/dns → dns/requests/linode}/dns_tests.rb +0 -0
  126. data/tests/{slicehost/requests/dns_tests → dns/requests/slicehost}/dns_tests.rb +0 -0
  127. data/tests/{zerigo/requests/dns → dns/requests/zerigo}/dns_tests.rb +0 -0
  128. data/tests/helper.rb +1 -100
  129. data/tests/helpers/{collection_tests.rb → collection_helper.rb} +0 -0
  130. data/tests/helpers/compute/{flavors_tests.rb → flavors_helper.rb} +0 -0
  131. data/tests/helpers/compute/{server_tests.rb → server_helper.rb} +0 -0
  132. data/tests/helpers/compute/{servers_tests.rb → servers_helper.rb} +0 -0
  133. data/tests/helpers/formats_helper.rb +68 -0
  134. data/tests/{helper_tests.rb → helpers/formats_helper_tests.rb} +0 -0
  135. data/tests/helpers/{model_tests.rb → model_helper.rb} +0 -0
  136. data/tests/helpers/responds_to_helper.rb +13 -0
  137. data/tests/helpers/succeeds_helper.rb +12 -0
  138. data/tests/storage/helper.rb +16 -0
  139. data/tests/storage/models/directories_tests.rb +13 -0
  140. data/tests/storage/models/directory_test.rb +24 -0
  141. data/tests/storage/models/file_tests.rb +41 -0
  142. data/tests/storage/models/files_tests.rb +26 -0
  143. data/tests/{aws/requests/storage → storage/requests/aws}/bucket_tests.rb +0 -0
  144. data/tests/{aws/requests/storage → storage/requests/aws}/multipart_upload_tests.rb +0 -0
  145. data/tests/{aws/requests/storage → storage/requests/aws}/object_tests.rb +0 -0
  146. data/tests/{google/requests/storage → storage/requests/google}/bucket_tests.rb +0 -0
  147. data/tests/{google/requests/storage → storage/requests/google}/object_tests.rb +0 -0
  148. data/tests/{rackspace/requests/storage → storage/requests/rackspace}/container_tests.rb +0 -0
  149. data/tests/{rackspace/requests/storage → storage/requests/rackspace}/object_tests.rb +0 -0
  150. metadata +195 -224
  151. data/examples/bluebox_create.rb +0 -33
  152. data/examples/dns_methods.rb +0 -389
  153. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +0 -31
  154. data/spec/aws/requests/simpledb/create_domain_spec.rb +0 -29
  155. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +0 -39
  156. data/spec/aws/requests/simpledb/delete_domain_spec.rb +0 -28
  157. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +0 -52
  158. data/spec/aws/requests/simpledb/get_attributes_spec.rb +0 -67
  159. data/spec/aws/requests/simpledb/list_domains_spec.rb +0 -30
  160. data/spec/aws/requests/simpledb/put_attributes_spec.rb +0 -49
  161. data/spec/aws/requests/simpledb/select_spec.rb +0 -27
  162. data/tests/aws/models/compute/flavors_tests.rb +0 -5
  163. data/tests/aws/models/compute/server_tests.rb +0 -6
  164. data/tests/aws/models/compute/servers_tests.rb +0 -6
  165. data/tests/aws/models/storage/directories_tests.rb +0 -5
  166. data/tests/aws/models/storage/directory_tests.rb +0 -5
  167. data/tests/aws/models/storage/file_tests.rb +0 -5
  168. data/tests/aws/models/storage/files_tests.rb +0 -5
  169. data/tests/bluebox/models/compute/flavors_tests.rb +0 -5
  170. data/tests/bluebox/models/compute/server_tests.rb +0 -5
  171. data/tests/bluebox/models/compute/servers_tests.rb +0 -6
  172. data/tests/brightbox/models/compute/flavors_tests.rb +0 -5
  173. data/tests/brightbox/models/compute/server_tests.rb +0 -6
  174. data/tests/brightbox/models/compute/servers_tests.rb +0 -6
  175. data/tests/go_grid/helper.rb +0 -0
  176. data/tests/google/models/storage/directories_tests.rb +0 -5
  177. data/tests/google/models/storage/directory_tests.rb +0 -5
  178. data/tests/google/models/storage/file_tests.rb +0 -5
  179. data/tests/google/models/storage/files_tests.rb +0 -5
  180. data/tests/helpers/storage/directories_tests.rb +0 -7
  181. data/tests/helpers/storage/directory_tests.rb +0 -18
  182. data/tests/helpers/storage/file_tests.rb +0 -27
  183. data/tests/helpers/storage/files_tests.rb +0 -13
  184. data/tests/local/models/storage/directories_tests.rb +0 -5
  185. data/tests/local/models/storage/directory_tests.rb +0 -5
  186. data/tests/local/models/storage/file_tests.rb +0 -5
  187. data/tests/local/models/storage/files_tests.rb +0 -5
  188. data/tests/rackspace/models/compute/flavors_tests.rb +0 -5
  189. data/tests/rackspace/models/compute/server_tests.rb +0 -6
  190. data/tests/rackspace/models/compute/servers_tests.rb +0 -6
  191. data/tests/rackspace/models/storage/directories_tests.rb +0 -5
  192. data/tests/rackspace/models/storage/directory_tests.rb +0 -5
  193. data/tests/rackspace/models/storage/file_tests.rb +0 -5
  194. data/tests/rackspace/models/storage/files_tests.rb +0 -5
  195. data/tests/rackspace/requests/compute/resize_tests.rb +0 -47
  196. data/tests/slicehost/helper.rb +0 -1
  197. data/tests/slicehost/models/compute/flavors_tests.rb +0 -5
  198. data/tests/slicehost/models/compute/server_tests.rb +0 -6
  199. data/tests/slicehost/models/compute/servers_tests.rb +0 -6
  200. data/tests/zerigo/helper.rb +0 -0
@@ -14,12 +14,13 @@ module Fog
14
14
  attribute :cache_control, :aliases => 'Cache-Control'
15
15
  attribute :content_disposition, :aliases => 'Content-Disposition'
16
16
  attribute :content_encoding, :aliases => 'Content-Encoding'
17
- attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer
17
+ attribute :content_length, :aliases => ['Content-Length', 'Size']
18
18
  attribute :content_md5, :aliases => 'Content-MD5'
19
19
  attribute :content_type, :aliases => 'Content-Type'
20
20
  attribute :etag, :aliases => ['Etag', 'ETag']
21
21
  attribute :expires, :aliases => 'Expires'
22
- attribute :last_modified, :aliases => ['Last-Modified', 'LastModified'], :type => :time
22
+ attribute :last_modified, :aliases => ['Last-Modified', 'LastModified']
23
+ attribute :metadata
23
24
  attribute :owner, :aliases => 'Owner'
24
25
  attribute :storage_class, :aliases => ['x-goog-storage-class', 'StorageClass']
25
26
 
@@ -63,6 +64,16 @@ module Fog
63
64
  true
64
65
  end
65
66
 
67
+ remove_method :metadata
68
+ def metadata
69
+ attributes.reject {|key, value| !(key.to_s =~ /^x-goog-meta-/)}
70
+ end
71
+
72
+ remove_method :metadata=
73
+ def metadata=(new_metadata)
74
+ merge_attributes(new_metadata)
75
+ end
76
+
66
77
  remove_method :owner=
67
78
  def owner=(new_owner)
68
79
  if new_owner
@@ -107,6 +118,7 @@ module Fog
107
118
  options['Content-MD5'] = content_md5 if content_md5
108
119
  options['Content-Type'] = content_type if content_type
109
120
  options['Expires'] = expires if expires
121
+ options.merge(metadata)
110
122
 
111
123
  data = connection.put_object(directory.key, key, body, options)
112
124
  merge_attributes(data.headers)
@@ -6,6 +6,10 @@ module Fog
6
6
  recognizes :port, :scheme, :persistent
7
7
 
8
8
  model_path 'fog/linode/models/dns'
9
+ model :record
10
+ collection :records
11
+ model :zone
12
+ collection :zones
9
13
 
10
14
  request_path 'fog/linode/requests/dns'
11
15
  request :domain_create
@@ -0,0 +1,69 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Linode
5
+ class DNS
6
+
7
+ class Record < Fog::Model
8
+
9
+ identity :id, :aliases => ['ResourceID', 'RESOURCEID']
10
+
11
+ attribute :ip, :aliases => 'TARGET'
12
+ attribute :name, :aliases => 'NAME'
13
+ attribute :priority, :aliases => 'PRIORITY'
14
+ attribute :ttl, :aliases => 'TTL_SEC'
15
+ attribute :type, :aliases => 'TYPE'
16
+ attribute :zone_id, :aliases => 'DOMAINID'
17
+
18
+ # "PROTOCOL":"",
19
+ # "WEIGHT":0,
20
+ # "PORT":0,
21
+
22
+ def initialize(attributes={})
23
+ self.ttl ||= 3600
24
+ super
25
+ end
26
+
27
+ def destroy
28
+ requires :identity, :zone
29
+ connection.domain_resource_delete(zone.id, identity)
30
+ true
31
+ end
32
+
33
+ def zone
34
+ @zone
35
+ end
36
+
37
+ def save
38
+ requires :type, :zone
39
+ options = {}
40
+ # * options<~Hash>
41
+ # * weight<~Integer>: default: 5
42
+ # * port<~Integer>: default: 80
43
+ # * protocol<~String>: The protocol to append to an SRV record. Ignored on other record
44
+ # types. default: udp
45
+ options[:name] = name if name
46
+ options[:priority] = priority if priority
47
+ options[:target] = ip if ip
48
+ options[:ttl_sec] = ttl if ttl
49
+ response = unless identity
50
+ connection.domain_resource_create(zone.identity, type, options)
51
+ else
52
+ options[:type] = type if type
53
+ connection.domain_resource_update(zone.identity, identity, options)
54
+ end
55
+ merge_attributes(response.body['DATA'])
56
+ true
57
+ end
58
+
59
+ private
60
+
61
+ def zone=(new_zone)
62
+ @zone = new_zone
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,37 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/linode/models/dns/record'
3
+
4
+ module Fog
5
+ module Linode
6
+ class DNS
7
+
8
+ class Records < Fog::Collection
9
+
10
+ attribute :zone
11
+
12
+ model Fog::Linode::DNS::Record
13
+
14
+ def all
15
+ requires :zone
16
+ data = connection.domain_resource_list(zone.id).body['DATA']
17
+ load(data)
18
+ end
19
+
20
+ def get(record_id)
21
+ if data = connection.domain_resource_list(zone.id, record_id).body['DATA'].first
22
+ new(data)
23
+ else
24
+ nil
25
+ end
26
+ end
27
+
28
+ def new(attributes = {})
29
+ requires :zone
30
+ super({ :zone => zone }.merge!(attributes))
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,84 @@
1
+ require 'fog/core/model'
2
+ require 'fog/linode/models/dns/records'
3
+
4
+ module Fog
5
+ module Linode
6
+ class DNS
7
+
8
+ class Zone < Fog::Model
9
+
10
+ identity :id, :aliases => ['DomainID', 'DOMAINID', 'ResourceID']
11
+
12
+ attribute :description, :aliases => 'DESCRIPTION'
13
+ attribute :domain, :aliases => 'DOMAIN'
14
+ attribute :email, :aliases => 'SOA_EMAIL'
15
+ attribute :ttl, :aliases => 'TTL_SEC'
16
+ attribute :type, :aliases => 'TYPE'
17
+
18
+ # "STATUS":1,
19
+ # "RETRY_SEC":0,
20
+ # "MASTER_IPS":"",
21
+ # "EXPIRE_SEC":0,
22
+ # "REFRESH_SEC":0,
23
+ # "TTL_SEC":0
24
+
25
+ def initialize(attributes={})
26
+ self.type ||= 'master'
27
+ self.ttl ||= 3600
28
+ super
29
+ end
30
+
31
+ def destroy
32
+ requires :identity
33
+ connection.domain_delete(identity)
34
+ true
35
+ end
36
+
37
+ def records
38
+ @records ||= begin
39
+ Fog::Linode::DNS::Records.new(
40
+ :zone => self,
41
+ :connection => connection
42
+ )
43
+ end
44
+ end
45
+
46
+ def nameservers
47
+ [
48
+ 'ns1.linode.com',
49
+ 'ns2.linode.com',
50
+ 'ns3.linode.com',
51
+ 'ns4.linode.com',
52
+ 'ns5.linode.com'
53
+ ]
54
+ end
55
+
56
+ def save
57
+ requires :domain, :type
58
+ requires :email if type == 'master'
59
+ options = {}
60
+ # * options<~Hash>
61
+ # * refresh_sec<~Integer> numeric, default: '0'
62
+ # * retry_sec<~Integer> numeric, default: '0'
63
+ # * expire_sec<~Integer> numeric, default: '0'
64
+ # * status<~Integer> 0, 1, or 2 (disabled, active, edit mode), default: 1
65
+ # * master_ips<~String> When type=slave, the zone's master DNS servers list, semicolon separated
66
+ options[:description] = description if description
67
+ options[:soa_email] = email if email
68
+ options[:ttl_sec] = ttl if ttl
69
+ response = unless identity
70
+ connection.domain_create(domain, type, options)
71
+ else
72
+ options[:domain] = domain if domain
73
+ options[:type] = type if type
74
+ connection.domain_update(identity, options)
75
+ end
76
+ merge_attributes(response.body['DATA'])
77
+ true
78
+ end
79
+
80
+ end
81
+
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/linode/models/dns/zone'
3
+
4
+ module Fog
5
+ module Linode
6
+ class DNS
7
+
8
+ class Zones < Fog::Collection
9
+
10
+ model Fog::Linode::DNS::Zone
11
+
12
+ def all
13
+ data = connection.domain_list.body['DATA']
14
+ load(data)
15
+ end
16
+
17
+ def get(zone_id)
18
+ if data = connection.domain_list(zone_id).body['DATA'].first
19
+ new(data)
20
+ else
21
+ nil
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -24,8 +24,7 @@ module Fog
24
24
  # * body<~Hash>:
25
25
  # * DATA<~Hash>:
26
26
  # * 'DomainID'<~Integer>: domain ID
27
- def domain_create( domain, type, options = {})
28
-
27
+ def domain_create(domain, type, options = {})
29
28
  query= {}
30
29
  request(
31
30
  :expects => 200,
@@ -42,7 +41,7 @@ module Fog
42
41
 
43
42
  class Mock
44
43
 
45
- def domain_create( domain, type, options ={})
44
+ def domain_create(domain, type, options ={})
46
45
  Fog::Mock.not_implemented
47
46
  end
48
47
 
@@ -11,7 +11,7 @@ module Fog
11
11
  # * options<~Hash>
12
12
  # * name<~String>: The hostname or FQDN. When Type=MX the subdomain to delegate to the
13
13
  # Target MX server
14
- # * targe<~String> When Type=MX the hostname. When Type=CNAME the target of the alias.
14
+ # * target<~String> When Type=MX the hostname. When Type=CNAME the target of the alias.
15
15
  # When Type=TXT the value of the record. When Type=A or AAAA the token
16
16
  # of '[remote_addr]' will be substituted with the IP address of the request.
17
17
  # * priority<~Integer>: priority for MX and SRV records, 0-255 - default: 10
@@ -25,8 +25,7 @@ module Fog
25
25
  # * body<~Hash>:
26
26
  # * DATA<~Hash>:
27
27
  # * 'ResourceID'<~Integer>: ID of the resource record created
28
- def domain_resource_create( domain_id, type, options = {})
29
-
28
+ def domain_resource_create(domain_id, type, options = {})
30
29
  query= {}
31
30
  request(
32
31
  :expects => 200,
@@ -43,7 +42,7 @@ module Fog
43
42
 
44
43
  class Mock
45
44
 
46
- def domain_resource_create( domain_id, type, options = {})
45
+ def domain_resource_create(domain_id, type, options = {})
47
46
  Fog::Mock.not_implemented
48
47
  end
49
48
 
@@ -26,11 +26,14 @@ module Fog
26
26
  # * 'DOMAINID'<~Interger>: ID of the domain that this record belongs to
27
27
  # * 'NAME'<~Interger>: The hostname or FQDN. When Type=MX, the subdomain to delegate to
28
28
  def domain_resource_list(domain_id, resource_id = nil)
29
-
29
+ query = { :api_action => 'domain.resource.list', :domainID => domain_id }
30
+ if resource_id
31
+ query[:resourceID] = resource_id
32
+ end
30
33
  request(
31
34
  :expects => 200,
32
35
  :method => 'GET',
33
- :query => { :api_action => 'domain.resource.list', :domainID => domain_id, :resourceID => resource_id }
36
+ :query => query
34
37
  )
35
38
  end
36
39
 
@@ -26,7 +26,7 @@ module Fog
26
26
  # * body<~Hash>:
27
27
  # * DATA<~Hash>:
28
28
  # * 'ResourceID'<~Integer>: ID of the resource record updated
29
- def domain_resource_update( domain_id, resource_id, options = {})
29
+ def domain_resource_update(domain_id, resource_id, options = {})
30
30
 
31
31
  query= {}
32
32
  request(
@@ -44,7 +44,7 @@ module Fog
44
44
 
45
45
  class Mock
46
46
 
47
- def domain_resource_update( domain_id, resource_id, options = {})
47
+ def domain_resource_update(domain_id, resource_id, options = {})
48
48
  Fog::Mock.not_implemented
49
49
  end
50
50
 
@@ -24,7 +24,7 @@ module Fog
24
24
  # * body<~Hash>:
25
25
  # * DATA<~Hash>:
26
26
  # * 'DomainID'<~Integer>: domain ID
27
- def domain_update( domain_id, options = {})
27
+ def domain_update(domain_id, options = {})
28
28
 
29
29
  request(
30
30
  :expects => 200,
@@ -38,7 +38,7 @@ module Fog
38
38
 
39
39
  class Mock
40
40
 
41
- def domain_update(datacenter_id, payment_term, plan_id)
41
+ def domain_update(domain_id, options = {})
42
42
  Fog::Mock.not_implemented
43
43
  end
44
44
 
@@ -43,7 +43,7 @@ module Fog
43
43
  now = Time.now
44
44
  data = {
45
45
  'created' => now,
46
- 'id' => 123456,
46
+ 'id' => Fog::Mock.random_numbers(6).to_i,
47
47
  'name' => options['name'] || '',
48
48
  'serverId' => server_id,
49
49
  'status' => 'SAVING',
@@ -74,7 +74,7 @@ module Fog
74
74
  data = {
75
75
  'addresses' => { 'private' => ['0.0.0.0'], 'public' => ['0.0.0.0'] },
76
76
  'flavorId' => flavor_id,
77
- 'id' => 123456,
77
+ 'id' => Fog::Mock.random_numbers(6).to_i,
78
78
  'imageId' => image_id,
79
79
  'hostId' => "123456789ABCDEF01234567890ABCDEF",
80
80
  'metadata' => options['metadata'] || {},
@@ -25,7 +25,25 @@ module Fog
25
25
  class Mock
26
26
 
27
27
  def get_flavor_details(flavor_id)
28
- Fog::Mock.not_implemented
28
+ response = Excon::Response.new
29
+ flavor = {
30
+ 1 => { 'name' => '256 server', 'ram' => 256, 'disk' => 10 },
31
+ 2 => { 'name' => '512 server', 'ram' => 512, 'disk' => 20 },
32
+ 3 => { 'name' => '1GB server', 'ram' => 1024, 'disk' => 40 },
33
+ 4 => { 'name' => '2GB server', 'ram' => 2048, 'disk' => 80 },
34
+ 5 => { 'name' => '4GB server', 'ram' => 4096, 'disk' => 160 },
35
+ 6 => { 'name' => '8GB server', 'ram' => 8192, 'disk' => 320 },
36
+ 7 => { 'name' => '15.5GB server', 'ram' => 15872, 'disk' => 620 }
37
+ }[flavor_id]
38
+ if flavor
39
+ response.status = 200
40
+ response.body = {
41
+ 'flavor' => flavor
42
+ }
43
+ response
44
+ else
45
+ raise Fog::Rackspace::Compute::NotFound
46
+ end
29
47
  end
30
48
 
31
49
  end
@@ -23,7 +23,20 @@ module Fog
23
23
  class Mock
24
24
 
25
25
  def list_flavors
26
- Fog::Mock.not_implemented
26
+ response = Excon::Response.new
27
+ response.status = 200
28
+ response.body = {
29
+ 'flavors' => [
30
+ { 'name' => '256 server', 'id' => 1 },
31
+ { 'name' => '512 server', 'id' => 2 },
32
+ { 'name' => '1GB server', 'id' => 3 },
33
+ { 'name' => '2GB server', 'id' => 4 },
34
+ { 'name' => '4GB server', 'id' => 5 },
35
+ { 'name' => '8GB server', 'id' => 6 },
36
+ { 'name' => '15.5GB server', 'id' => 7 }
37
+ ]
38
+ }
39
+ response
27
40
  end
28
41
 
29
42
  end