fog 1.4.0 → 1.5.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 (236) hide show
  1. data/.document +1 -1
  2. data/.irbrc +5 -10
  3. data/{README.rdoc → README.md} +66 -61
  4. data/Rakefile +4 -6
  5. data/changelog.txt +491 -0
  6. data/docs/about/users.markdown +1 -0
  7. data/fog.gemspec +4 -4
  8. data/lib/fog.rb +1 -1
  9. data/lib/fog/aws.rb +4 -0
  10. data/lib/fog/aws/auto_scaling.rb +3 -0
  11. data/lib/fog/aws/cloud_watch.rb +28 -0
  12. data/lib/fog/aws/compute.rb +7 -1
  13. data/lib/fog/aws/elasticache.rb +64 -6
  14. data/lib/fog/aws/models/auto_scaling/configuration.rb +3 -1
  15. data/lib/fog/aws/models/auto_scaling/group.rb +10 -9
  16. data/lib/fog/aws/models/auto_scaling/policies.rb +33 -0
  17. data/lib/fog/aws/models/auto_scaling/policy.rb +46 -0
  18. data/lib/fog/aws/models/cloud_watch/alarm.rb +50 -2
  19. data/lib/fog/aws/models/cloud_watch/alarms.rb +18 -1
  20. data/lib/fog/aws/models/compute/address.rb +2 -2
  21. data/lib/fog/aws/models/dns/records.rb +5 -0
  22. data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
  23. data/lib/fog/aws/models/iam/users.rb +26 -4
  24. data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +7 -5
  25. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +1 -1
  26. data/lib/fog/aws/rds.rb +1 -1
  27. data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +8 -0
  28. data/lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb +1 -2
  29. data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +10 -2
  30. data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +1 -1
  31. data/lib/fog/aws/requests/auto_scaling/delete_policy.rb +10 -1
  32. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_instances.rb +0 -1
  33. data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +13 -1
  34. data/lib/fog/aws/requests/auto_scaling/put_scaling_policy.rb +20 -1
  35. data/lib/fog/aws/requests/auto_scaling/update_auto_scaling_group.rb +1 -1
  36. data/lib/fog/aws/requests/cloud_watch/delete_alarms.rb +19 -1
  37. data/lib/fog/aws/requests/cloud_watch/describe_alarms.rb +20 -2
  38. data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +9 -0
  39. data/lib/fog/aws/requests/compute/allocate_address.rb +4 -5
  40. data/lib/fog/aws/requests/compute/create_dhcp_options.rb +6 -5
  41. data/lib/fog/aws/requests/compute/create_internet_gateway.rb +7 -6
  42. data/lib/fog/aws/requests/compute/create_subnet.rb +11 -10
  43. data/lib/fog/aws/requests/compute/create_vpc.rb +8 -7
  44. data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +1 -0
  45. data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +1 -0
  46. data/lib/fog/aws/requests/compute/delete_subnet.rb +1 -0
  47. data/lib/fog/aws/requests/compute/delete_vpc.rb +2 -1
  48. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +1 -0
  49. data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +1 -8
  50. data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
  51. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +1 -8
  52. data/lib/fog/aws/requests/compute/describe_subnets.rb +1 -9
  53. data/lib/fog/aws/requests/compute/describe_vpcs.rb +1 -8
  54. data/lib/fog/aws/requests/compute/release_address.rb +12 -4
  55. data/lib/fog/aws/requests/compute/start_instances.rb +1 -0
  56. data/lib/fog/aws/requests/compute/stop_instances.rb +1 -0
  57. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +26 -2
  58. data/lib/fog/aws/requests/elasticache/delete_cache_cluster.rb +10 -1
  59. data/lib/fog/aws/requests/elasticache/describe_cache_clusters.rb +16 -1
  60. data/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +35 -3
  61. data/lib/fog/aws/requests/elasticache/reboot_cache_cluster.rb +10 -2
  62. data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -1
  63. data/lib/fog/aws/requests/rds/describe_db_instances.rb +3 -3
  64. data/lib/fog/aws/sqs.rb +1 -1
  65. data/lib/fog/aws/storage.rb +1 -1
  66. data/lib/fog/bin/rackspace.rb +4 -0
  67. data/lib/fog/cloudstack/compute.rb +25 -18
  68. data/lib/fog/cloudstack/models/compute/image.rb +34 -34
  69. data/lib/fog/cloudstack/models/compute/job.rb +14 -1
  70. data/lib/fog/cloudstack/models/compute/jobs.rb +1 -1
  71. data/lib/fog/cloudstack/models/compute/security_group.rb +50 -0
  72. data/lib/fog/cloudstack/models/compute/security_group_rule.rb +62 -0
  73. data/lib/fog/cloudstack/models/compute/security_group_rules.rb +37 -0
  74. data/lib/fog/cloudstack/models/compute/security_groups.rb +27 -0
  75. data/lib/fog/cloudstack/models/compute/server.rb +63 -39
  76. data/lib/fog/cloudstack/models/compute/volume.rb +3 -7
  77. data/lib/fog/cloudstack/models/compute/zone.rb +1 -2
  78. data/lib/fog/cloudstack/requests/compute/assign_virtual_machine.rb +18 -0
  79. data/lib/fog/cloudstack/requests/compute/authorize_security_group_egress.rb +68 -0
  80. data/lib/fog/cloudstack/requests/compute/authorize_security_group_ingress.rb +55 -4
  81. data/lib/fog/cloudstack/requests/compute/create_security_group.rb +12 -4
  82. data/lib/fog/cloudstack/requests/compute/create_zone.rb +20 -0
  83. data/lib/fog/cloudstack/requests/compute/delete_security_group.rb +17 -0
  84. data/lib/fog/cloudstack/requests/compute/destroy_virtual_machine.rb +23 -1
  85. data/lib/fog/cloudstack/requests/compute/list_firewall_rules.rb +15 -0
  86. data/lib/fog/cloudstack/requests/compute/list_security_groups.rb +22 -4
  87. data/lib/fog/cloudstack/requests/compute/query_async_job_result.rb +15 -3
  88. data/lib/fog/cloudstack/requests/compute/revoke_security_group_egress.rb +42 -0
  89. data/lib/fog/cloudstack/requests/compute/revoke_security_group_ingress.rb +29 -3
  90. data/lib/fog/core.rb +1 -0
  91. data/lib/fog/core/attributes.rb +1 -1
  92. data/lib/fog/core/current_machine.rb +2 -2
  93. data/lib/fog/core/scp.rb +8 -0
  94. data/lib/fog/core/ssh.rb +8 -0
  95. data/lib/fog/dynect/dns.rb +14 -5
  96. data/lib/fog/ibm/requests/compute/create_instance.rb +1 -1
  97. data/lib/fog/libvirt/requests/compute/create_volume.rb +1 -1
  98. data/lib/fog/libvirt/requests/compute/list_volumes.rb +1 -1
  99. data/lib/fog/local/models/storage/file.rb +12 -1
  100. data/lib/fog/local/storage.rb +25 -1
  101. data/lib/fog/ninefold/compute.rb +1 -0
  102. data/lib/fog/openstack.rb +3 -1
  103. data/lib/fog/openstack/compute.rb +13 -2
  104. data/lib/fog/openstack/models/compute/servers.rb +10 -2
  105. data/lib/fog/openstack/requests/compute/create_flavor.rb +2 -2
  106. data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
  107. data/lib/fog/openstack/requests/compute/create_server.rb +1 -1
  108. data/lib/fog/openstack/requests/compute/create_volume.rb +1 -1
  109. data/lib/fog/openstack/requests/compute/get_flavor_details.rb +7 -7
  110. data/lib/fog/openstack/requests/compute/get_quota.rb +1 -12
  111. data/lib/fog/openstack/requests/compute/get_quota_defaults.rb +1 -12
  112. data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
  113. data/lib/fog/openstack/requests/compute/list_flavors.rb +7 -7
  114. data/lib/fog/openstack/requests/compute/list_flavors_detail.rb +7 -7
  115. data/lib/fog/openstack/requests/compute/list_security_groups.rb +7 -7
  116. data/lib/fog/openstack/requests/compute/list_servers_detail.rb +4 -3
  117. data/lib/fog/openstack/requests/compute/list_volumes.rb +6 -8
  118. data/lib/fog/openstack/requests/compute/update_quota.rb +2 -15
  119. data/lib/fog/openstack/requests/identity/delete_role.rb +1 -1
  120. data/lib/fog/openstack/requests/identity/list_roles.rb +1 -1
  121. data/lib/fog/openstack/requests/image/create_image.rb +3 -1
  122. data/lib/fog/openstack/requests/image/list_public_images.rb +19 -1
  123. data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +20 -2
  124. data/lib/fog/openstack/requests/image/update_image.rb +1 -1
  125. data/lib/fog/rackspace.rb +2 -0
  126. data/lib/fog/rackspace/databases.rb +121 -0
  127. data/lib/fog/rackspace/identity.rb +83 -0
  128. data/lib/fog/rackspace/load_balancers.rb +3 -0
  129. data/lib/fog/rackspace/models/databases/database.rb +32 -0
  130. data/lib/fog/rackspace/models/databases/databases.rb +31 -0
  131. data/lib/fog/rackspace/models/databases/flavor.rb +15 -0
  132. data/lib/fog/rackspace/models/databases/flavors.rb +25 -0
  133. data/lib/fog/rackspace/models/databases/instance.rb +104 -0
  134. data/lib/fog/rackspace/models/databases/instances.rb +25 -0
  135. data/lib/fog/rackspace/models/databases/user.rb +32 -0
  136. data/lib/fog/rackspace/models/databases/users.rb +31 -0
  137. data/lib/fog/rackspace/models/identity/credential.rb +13 -0
  138. data/lib/fog/rackspace/models/identity/credentials.rb +32 -0
  139. data/lib/fog/rackspace/models/identity/role.rb +14 -0
  140. data/lib/fog/rackspace/models/identity/roles.rb +32 -0
  141. data/lib/fog/rackspace/models/identity/tenant.rb +15 -0
  142. data/lib/fog/rackspace/models/identity/tenants.rb +28 -0
  143. data/lib/fog/rackspace/models/identity/user.rb +53 -0
  144. data/lib/fog/rackspace/models/identity/users.rb +36 -0
  145. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +17 -0
  146. data/lib/fog/rackspace/requests/databases/check_root_user.rb +15 -0
  147. data/lib/fog/rackspace/requests/databases/create_database.rb +24 -0
  148. data/lib/fog/rackspace/requests/databases/create_instance.rb +26 -0
  149. data/lib/fog/rackspace/requests/databases/create_user.rb +24 -0
  150. data/lib/fog/rackspace/requests/databases/delete_database.rb +15 -0
  151. data/lib/fog/rackspace/requests/databases/delete_instance.rb +15 -0
  152. data/lib/fog/rackspace/requests/databases/delete_user.rb +15 -0
  153. data/lib/fog/rackspace/requests/databases/enable_root_user.rb +15 -0
  154. data/lib/fog/rackspace/requests/databases/get_flavor.rb +15 -0
  155. data/lib/fog/rackspace/requests/databases/get_instance.rb +15 -0
  156. data/lib/fog/rackspace/requests/databases/list_databases.rb +15 -0
  157. data/lib/fog/rackspace/requests/databases/list_flavors.rb +15 -0
  158. data/lib/fog/rackspace/requests/databases/list_instances.rb +15 -0
  159. data/lib/fog/rackspace/requests/databases/list_users.rb +15 -0
  160. data/lib/fog/rackspace/requests/databases/resize_instance.rb +22 -0
  161. data/lib/fog/rackspace/requests/databases/resize_instance_volume.rb +24 -0
  162. data/lib/fog/rackspace/requests/databases/restart_instance.rb +20 -0
  163. data/lib/fog/rackspace/requests/identity/create_token.rb +25 -0
  164. data/lib/fog/rackspace/requests/identity/create_user.rb +25 -0
  165. data/lib/fog/rackspace/requests/identity/delete_user.rb +15 -0
  166. data/lib/fog/rackspace/requests/identity/get_credentials.rb +15 -0
  167. data/lib/fog/rackspace/requests/identity/get_user_by_id.rb +15 -0
  168. data/lib/fog/rackspace/requests/identity/get_user_by_name.rb +15 -0
  169. data/lib/fog/rackspace/requests/identity/list_credentials.rb +22 -0
  170. data/lib/fog/rackspace/requests/identity/list_tenants.rb +22 -0
  171. data/lib/fog/rackspace/requests/identity/list_user_roles.rb +22 -0
  172. data/lib/fog/rackspace/requests/identity/list_users.rb +22 -0
  173. data/lib/fog/rackspace/requests/identity/update_user.rb +24 -0
  174. data/lib/fog/rackspace/requests/load_balancers/get_ssl_termination.rb +15 -0
  175. data/lib/fog/rackspace/requests/load_balancers/remove_ssl_termination.rb +15 -0
  176. data/lib/fog/rackspace/requests/load_balancers/set_ssl_termination.rb +31 -0
  177. data/lib/fog/rackspace/storage.rb +1 -1
  178. data/lib/fog/vsphere/models/compute/server.rb +1 -0
  179. data/lib/fog/vsphere/requests/compute/vm_clone.rb +2 -2
  180. data/tests/aws/models/compute/address_tests.rb +2 -1
  181. data/tests/aws/models/compute/volume_tests.rb +1 -1
  182. data/tests/aws/models/dns/records_tests.rb +19 -1
  183. data/tests/aws/models/storage/directory_tests.rb +1 -1
  184. data/tests/aws/models/storage/url_tests.rb +7 -1
  185. data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +4 -2
  186. data/tests/aws/requests/compute/address_tests.rb +19 -1
  187. data/tests/aws/requests/elasticache/cache_cluster_tests.rb +4 -4
  188. data/tests/aws/requests/elb/helper.rb +13 -2
  189. data/tests/aws/requests/iam/access_key_tests.rb +1 -3
  190. data/tests/cloudstack/compute/models/security_group_rule_tests.rb +29 -0
  191. data/tests/cloudstack/compute/models/security_group_tests.rb +16 -0
  192. data/tests/cloudstack/compute/models/security_groups_tests.rb +19 -0
  193. data/tests/cloudstack/compute/models/server_tests.rb +18 -0
  194. data/tests/cloudstack/compute/models/volume_tests.rb +34 -0
  195. data/tests/cloudstack/compute/models/volumes_tests.rb +17 -0
  196. data/tests/compute/helper.rb +10 -3
  197. data/tests/core/current_machine_tests.rb +32 -0
  198. data/tests/helper.rb +1 -1
  199. data/tests/helpers/mock_helper.rb +3 -0
  200. data/tests/hp/requests/compute/address_tests.rb +2 -1
  201. data/tests/joyent/requests/compute/datasets_tests.rb +12 -3
  202. data/tests/local/models/file_tests.rb +43 -0
  203. data/tests/local/storage_tests.rb +40 -0
  204. data/tests/openstack/requests/compute/flavor_tests.rb +1 -1
  205. data/tests/openstack/requests/compute/server_tests.rb +3 -3
  206. data/tests/openstack/requests/compute/volume_tests.rb +1 -1
  207. data/tests/openstack/requests/identity/role_tests.rb +1 -1
  208. data/tests/rackspace/databases_tests.rb +26 -0
  209. data/tests/rackspace/models/databases/database_tests.rb +17 -0
  210. data/tests/rackspace/models/databases/databases_tests.rb +17 -0
  211. data/tests/rackspace/models/databases/flavors_tests.rb +20 -0
  212. data/tests/rackspace/models/databases/instance_tests.rb +43 -0
  213. data/tests/rackspace/models/databases/instances_tests.rb +14 -0
  214. data/tests/rackspace/models/databases/user_tests.rb +21 -0
  215. data/tests/rackspace/models/databases/users_tests.rb +21 -0
  216. data/tests/rackspace/models/identity/credentials_tests.rb +16 -0
  217. data/tests/rackspace/models/identity/roles_tests.rb +16 -0
  218. data/tests/rackspace/models/identity/tenants_tests.rb +21 -0
  219. data/tests/rackspace/models/identity/user_tests.rb +17 -0
  220. data/tests/rackspace/models/identity/users_tests.rb +17 -0
  221. data/tests/rackspace/models/load_balancers/load_balancer_tests.rb +20 -0
  222. data/tests/rackspace/requests/databases/database_tests.rb +36 -0
  223. data/tests/rackspace/requests/databases/flavor_tests.rb +16 -0
  224. data/tests/rackspace/requests/databases/helper.rb +84 -0
  225. data/tests/rackspace/requests/databases/instance_tests.rb +77 -0
  226. data/tests/rackspace/requests/databases/user_tests.rb +37 -0
  227. data/tests/rackspace/requests/identity/tenants_tests.rb +21 -0
  228. data/tests/rackspace/requests/identity/token_tests.rb +63 -0
  229. data/tests/rackspace/requests/identity/user_tests.rb +107 -0
  230. data/tests/rackspace/requests/load_balancers/helper.rb +70 -1
  231. data/tests/rackspace/requests/load_balancers/ssl_termination_tests.rb +38 -0
  232. data/tests/storage/models/file_tests.rb +1 -1
  233. metadata +129 -13
  234. data/spec/core/current_machine_spec.rb +0 -32
  235. data/spec/lib/fog/aws/parsers/sqs/receive_message_spec.rb +0 -58
  236. data/spec/spec_helper.rb +0 -8
@@ -29,6 +29,9 @@ module Fog
29
29
  model :access_rule
30
30
 
31
31
  request_path 'fog/rackspace/requests/load_balancers'
32
+ request :get_ssl_termination
33
+ request :set_ssl_termination
34
+ request :remove_ssl_termination
32
35
  request :create_load_balancer
33
36
  request :get_load_balancer
34
37
  request :list_load_balancers
@@ -0,0 +1,32 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Databases
6
+ class Database < Fog::Model
7
+ identity :name
8
+
9
+ attribute :character_set
10
+ attribute :collate
11
+
12
+ def save
13
+ requires :identity, :instance
14
+ connection.create_database(instance.identity, identity, :character_set => character_set, :collate => collate)
15
+ true
16
+ end
17
+
18
+ def destroy
19
+ requires :identity, :instance
20
+ connection.delete_database(instance.identity, identity)
21
+ true
22
+ end
23
+
24
+ private
25
+
26
+ def instance
27
+ collection.instance
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/databases/database'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Databases
7
+ class Databases < Fog::Collection
8
+
9
+ model Fog::Rackspace::Databases::Database
10
+
11
+ attr_accessor :instance
12
+
13
+ def all
14
+ load(retrieve_databases)
15
+ end
16
+
17
+ def get(database_name)
18
+ data = retrieve_databases.find { |database| database['name'] == database_name }
19
+ data && new(data)
20
+ end
21
+
22
+ private
23
+
24
+ def retrieve_databases
25
+ requires :instance
26
+ data = connection.list_databases(instance.id).body['databases']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Databases
6
+ class Flavor < Fog::Model
7
+ identity :id
8
+
9
+ attribute :name
10
+ attribute :ram
11
+ attribute :links
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/databases/flavor'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Databases
7
+ class Flavors < Fog::Collection
8
+
9
+ model Fog::Rackspace::Databases::Flavor
10
+
11
+ def all
12
+ data = connection.list_flavors.body['flavors']
13
+ load(data)
14
+ end
15
+
16
+ def get(flavor_id)
17
+ data = connection.get_flavor(flavor_id).body['flavor']
18
+ new(data)
19
+ rescue Fog::Rackspace::Databases::NotFound
20
+ nil
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,104 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Databases
6
+ class Instance < Fog::Model
7
+ # States
8
+ ACTIVE = 'ACTIVE'
9
+ BUILD = 'BUILD'
10
+ BLOCKED = 'BLOCKED'
11
+ REBOOT = 'REBOOT'
12
+ RESIZE = 'RESIZE'
13
+ SHUTDOWN = 'SHUTDOWN'
14
+
15
+ identity :id
16
+
17
+ attribute :name
18
+ attribute :created
19
+ attribute :updated
20
+ attribute :state, :aliases => 'status'
21
+ attribute :hostname
22
+ attribute :links
23
+ attribute :flavor_id, :aliases => 'flavor', :squash => 'id'
24
+ attribute :volume_size, :aliases => 'volume', :squash => 'size'
25
+
26
+ attr_accessor :root_user, :root_password
27
+
28
+ def save
29
+ requires :name, :flavor_id, :volume_size
30
+ data = connection.create_instance(name, flavor_id, volume_size)
31
+ merge_attributes(data.body['instance'])
32
+ true
33
+ end
34
+
35
+ def destroy
36
+ requires :identity
37
+ connection.delete_instance(identity)
38
+ true
39
+ end
40
+
41
+ def flavor
42
+ requires :flavor_id
43
+ @flavor ||= connection.flavors.get(flavor_id)
44
+ end
45
+
46
+ def databases
47
+ @databases ||= begin
48
+ Fog::Rackspace::Databases::Databases.new({
49
+ :connection => connection,
50
+ :instance => self
51
+ })
52
+ end
53
+ end
54
+
55
+ def users
56
+ @users ||= begin
57
+ Fog::Rackspace::Databases::Users.new({
58
+ :connection => connection,
59
+ :instance => self
60
+ })
61
+ end
62
+ end
63
+
64
+ def ready?
65
+ state == ACTIVE
66
+ end
67
+
68
+ def root_user_enabled?
69
+ requires :identity
70
+ connection.check_root_user(identity).body['rootEnabled']
71
+ end
72
+
73
+ def enable_root_user
74
+ requires :identity
75
+ data = connection.enable_root_user(identity).body['user']
76
+ @root_user = data['name']
77
+ @root_password = data['password']
78
+ true
79
+ end
80
+
81
+ def restart
82
+ requires :identity
83
+ connection.restart_instance(identity)
84
+ self.state = REBOOT
85
+ true
86
+ end
87
+
88
+ def resize(flavor_id)
89
+ requires :identity
90
+ connection.resize_instance(identity, flavor_id)
91
+ self.state = RESIZE
92
+ true
93
+ end
94
+
95
+ def resize_volume(volume_size)
96
+ requires :identity
97
+ connection.resize_instance_volume(identity, volume_size)
98
+ self.state = RESIZE
99
+ true
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/databases/instance'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Databases
7
+ class Instances < Fog::Collection
8
+
9
+ model Fog::Rackspace::Databases::Instance
10
+
11
+ def all
12
+ data = connection.list_instances.body['instances']
13
+ load(data)
14
+ end
15
+
16
+ def get(instance_id)
17
+ data = connection.get_instance(instance_id).body['instance']
18
+ new(data)
19
+ rescue Fog::Rackspace::Databases::NotFound
20
+ nil
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Databases
6
+ class User < Fog::Model
7
+ identity :name
8
+
9
+ attribute :password
10
+ attribute :databases
11
+
12
+ def save
13
+ requires :identity, :instance, :password
14
+ connection.create_user(instance.identity, identity, password, :databases => databases)
15
+ true
16
+ end
17
+
18
+ def destroy
19
+ requires :identity, :instance
20
+ connection.delete_user(instance.identity, identity)
21
+ true
22
+ end
23
+
24
+ private
25
+
26
+ def instance
27
+ collection.instance
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/databases/user'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Databases
7
+ class Users < Fog::Collection
8
+
9
+ model Fog::Rackspace::Databases::User
10
+
11
+ attr_accessor :instance
12
+
13
+ def all
14
+ load(retrieve_users)
15
+ end
16
+
17
+ def get(user_name)
18
+ data = retrieve_users.find { |database| database['name'] == user_name }
19
+ data && new(data)
20
+ end
21
+
22
+ private
23
+
24
+ def retrieve_users
25
+ requires :instance
26
+ data = connection.list_users(instance.identity).body['users']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Identity
6
+ class Credential < Fog::Model
7
+ identity :apiKey
8
+
9
+ attribute :username
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/identity/credential'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Identity
7
+ class Credentials < Fog::Collection
8
+
9
+ model Fog::Rackspace::Identity::Credential
10
+
11
+ attr_accessor :user
12
+
13
+ def all
14
+ requires :user
15
+ load(retrieve_credentials)
16
+ end
17
+
18
+ def get(id)
19
+ requires :user
20
+ data = retrieve_credentials.find{ |credential| credential['id'] == id }
21
+ data && new(data)
22
+ end
23
+
24
+ private
25
+
26
+ def retrieve_credentials
27
+ data = connection.list_credentials(user.identity).body['credentials']
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,14 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Identity
6
+ class Role < Fog::Model
7
+ identity :id
8
+
9
+ attribute :name
10
+ attribute :description
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/identity/role'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Identity
7
+ class Roles < Fog::Collection
8
+
9
+ model Fog::Rackspace::Identity::Role
10
+
11
+ attr_accessor :user
12
+
13
+ def all
14
+ requires :user
15
+ load(retrieve_roles)
16
+ end
17
+
18
+ def get(id)
19
+ requires :user
20
+ data = retrieve_roles.find{ |role| role['id'] == id }
21
+ data && new(data)
22
+ end
23
+
24
+ private
25
+
26
+ def retrieve_roles
27
+ data = connection.list_user_roles(user.identity).body['roles']
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Identity
6
+ class Tenant < Fog::Model
7
+ identity :id
8
+
9
+ attribute :name
10
+ attribute :description
11
+ attribute :enabled
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/rackspace/models/identity/tenant'
3
+
4
+ module Fog
5
+ module Rackspace
6
+ class Identity
7
+ class Tenants < Fog::Collection
8
+
9
+ model Fog::Rackspace::Identity::Tenant
10
+
11
+ def all
12
+ load(retrieve_tenants)
13
+ end
14
+
15
+ def get(id)
16
+ data = retrieve_tenants.find{ |tenant| tenant['id'] == id }
17
+ data && new(data)
18
+ end
19
+
20
+ private
21
+
22
+ def retrieve_tenants
23
+ data = connection.list_tenants.body['tenants']
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end