fog 0.6.0 → 0.7.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 (179) hide show
  1. data/Gemfile.lock +11 -6
  2. data/changelog.txt +49 -0
  3. data/fog.gemspec +5 -4
  4. data/lib/fog.rb +1 -1
  5. data/lib/fog/aws/cloud_formation.rb +124 -0
  6. data/lib/fog/aws/elb.rb +4 -1
  7. data/lib/fog/aws/iam.rb +6 -0
  8. data/lib/fog/aws/parsers/cloud_formation/basic.rb +12 -0
  9. data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +19 -0
  10. data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +31 -0
  11. data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +31 -0
  12. data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +72 -0
  13. data/lib/fog/aws/parsers/cloud_formation/get_template.rb +19 -0
  14. data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +52 -0
  15. data/lib/fog/aws/parsers/iam/login_profile.rb +27 -0
  16. data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +26 -0
  17. data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +38 -0
  18. data/lib/fog/aws/parsers/rds/create_db_instance.rb +34 -0
  19. data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +34 -0
  20. data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +35 -0
  21. data/lib/fog/aws/parsers/rds/create_db_security_group.rb +38 -0
  22. data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +35 -0
  23. data/lib/fog/aws/parsers/rds/db_parser.rb +123 -0
  24. data/lib/fog/aws/parsers/rds/delete_db_instance.rb +35 -0
  25. data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +27 -0
  26. data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +33 -0
  27. data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +34 -0
  28. data/lib/fog/aws/parsers/rds/describe_db_instances.rb +36 -0
  29. data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +38 -0
  30. data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +44 -0
  31. data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +39 -0
  32. data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +39 -0
  33. data/lib/fog/aws/parsers/rds/modify_db_instance.rb +34 -0
  34. data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +28 -0
  35. data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +35 -0
  36. data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +34 -0
  37. data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +35 -0
  38. data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +39 -0
  39. data/lib/fog/aws/parsers/rds/security_group_parser.rb +39 -0
  40. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +40 -0
  41. data/lib/fog/aws/rds.rb +161 -0
  42. data/lib/fog/aws/rds/models/parameter.rb +21 -0
  43. data/lib/fog/aws/rds/models/parameter_group.rb +36 -0
  44. data/lib/fog/aws/rds/models/parameter_groups.rb +27 -0
  45. data/lib/fog/aws/rds/models/parameters.rb +37 -0
  46. data/lib/fog/aws/rds/models/security_group.rb +73 -0
  47. data/lib/fog/aws/rds/models/security_groups.rb +43 -0
  48. data/lib/fog/aws/rds/models/server.rb +105 -0
  49. data/lib/fog/aws/rds/models/servers.rb +27 -0
  50. data/lib/fog/aws/rds/models/snapshot.rb +49 -0
  51. data/lib/fog/aws/rds/models/snapshots.rb +45 -0
  52. data/lib/fog/aws/requests/cloud_formation/create_stack.rb +71 -0
  53. data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +30 -0
  54. data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +44 -0
  55. data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +43 -0
  56. data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +42 -0
  57. data/lib/fog/aws/requests/cloud_formation/get_template.rb +32 -0
  58. data/lib/fog/aws/requests/cloud_formation/validate_template.rb +34 -0
  59. data/lib/fog/aws/requests/elb/create_load_balancer.rb +4 -0
  60. data/lib/fog/aws/requests/iam/create_login_profile.rb +36 -0
  61. data/lib/fog/aws/requests/iam/delete_login_profile.rb +31 -0
  62. data/lib/fog/aws/requests/iam/delete_server_certificate.rb +32 -0
  63. data/lib/fog/aws/requests/iam/get_login_profile.rb +35 -0
  64. data/lib/fog/aws/requests/iam/update_login_profile.rb +33 -0
  65. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +45 -0
  66. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +43 -0
  67. data/lib/fog/aws/requests/rds/create_db_instance.rb +56 -0
  68. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +42 -0
  69. data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +41 -0
  70. data/lib/fog/aws/requests/rds/create_db_security_group.rb +37 -0
  71. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +36 -0
  72. data/lib/fog/aws/requests/rds/delete_db_instance.rb +40 -0
  73. data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +36 -0
  74. data/lib/fog/aws/requests/rds/delete_db_security_group.rb +36 -0
  75. data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +36 -0
  76. data/lib/fog/aws/requests/rds/describe_db_instances.rb +42 -0
  77. data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +45 -0
  78. data/lib/fog/aws/requests/rds/describe_db_parameters.rb +46 -0
  79. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +39 -0
  80. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +42 -0
  81. data/lib/fog/aws/requests/rds/modify_db_instance.rb +54 -0
  82. data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +55 -0
  83. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +34 -0
  84. data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +34 -0
  85. data/lib/fog/aws/requests/rds/restore_db_instance_to_point_in_time.rb +35 -0
  86. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +44 -0
  87. data/lib/fog/aws/simpledb.rb +21 -7
  88. data/lib/fog/bin.rb +2 -1
  89. data/lib/fog/bin/aws.rb +8 -0
  90. data/lib/fog/bin/virtual_box.rb +52 -0
  91. data/lib/fog/cdn/aws.rb +9 -8
  92. data/lib/fog/cdn/rackspace.rb +6 -6
  93. data/lib/fog/cdn/requests/rackspace/post_container.rb +30 -0
  94. data/lib/fog/cdn/requests/rackspace/put_container.rb +1 -1
  95. data/lib/fog/compute.rb +6 -3
  96. data/lib/fog/compute/aws.rb +11 -7
  97. data/lib/fog/compute/bluebox.rb +5 -6
  98. data/lib/fog/compute/brightbox.rb +3 -0
  99. data/lib/fog/compute/go_grid.rb +5 -6
  100. data/lib/fog/compute/linode.rb +5 -6
  101. data/lib/fog/compute/models/aws/flavors.rb +19 -18
  102. data/lib/fog/compute/models/aws/server.rb +23 -0
  103. data/lib/fog/compute/models/aws/tag.rb +1 -1
  104. data/lib/fog/compute/models/brightbox/server.rb +7 -1
  105. data/lib/fog/compute/models/virtual_box/medium.rb +87 -0
  106. data/lib/fog/compute/models/virtual_box/medium_format.rb +34 -0
  107. data/lib/fog/compute/models/virtual_box/mediums.rb +32 -0
  108. data/lib/fog/compute/models/virtual_box/nat_engine.rb +65 -0
  109. data/lib/fog/compute/models/virtual_box/nat_redirect.rb +91 -0
  110. data/lib/fog/compute/models/virtual_box/nat_redirects.rb +41 -0
  111. data/lib/fog/compute/models/virtual_box/network_adapter.rb +82 -0
  112. data/lib/fog/compute/models/virtual_box/network_adapters.rb +42 -0
  113. data/lib/fog/compute/models/virtual_box/server.rb +241 -0
  114. data/lib/fog/compute/models/virtual_box/servers.rb +41 -0
  115. data/lib/fog/compute/models/virtual_box/storage_controller.rb +83 -0
  116. data/lib/fog/compute/models/virtual_box/storage_controllers.rb +38 -0
  117. data/lib/fog/compute/models/voxel/servers.rb +7 -6
  118. data/lib/fog/compute/new_servers.rb +5 -6
  119. data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +35 -0
  120. data/lib/fog/compute/rackspace.rb +7 -7
  121. data/lib/fog/compute/requests/aws/delete_tags.rb +12 -9
  122. data/lib/fog/compute/requests/aws/monitor_instances.rb +52 -0
  123. data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +24 -8
  124. data/lib/fog/compute/requests/aws/unmonitor_instances.rb +53 -0
  125. data/lib/fog/compute/requests/brightbox/activate_console_server.rb +20 -0
  126. data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +20 -0
  127. data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +20 -0
  128. data/lib/fog/compute/slicehost.rb +5 -6
  129. data/lib/fog/compute/virtual_box.rb +48 -0
  130. data/lib/fog/compute/voxel.rb +30 -27
  131. data/lib/fog/core.rb +1 -0
  132. data/lib/fog/core/attributes.rb +3 -1
  133. data/lib/fog/core/collection.rb +2 -2
  134. data/lib/fog/core/credentials.rb +13 -3
  135. data/lib/fog/core/scp.rb +0 -4
  136. data/lib/fog/core/service.rb +0 -8
  137. data/lib/fog/core/ssh.rb +0 -4
  138. data/lib/fog/dns.rb +3 -3
  139. data/lib/fog/dns/aws.rb +8 -8
  140. data/lib/fog/dns/bluebox.rb +5 -7
  141. data/lib/fog/dns/dnsimple.rb +7 -7
  142. data/lib/fog/dns/linode.rb +5 -6
  143. data/lib/fog/dns/models/dnsimple/record.rb +11 -1
  144. data/lib/fog/dns/models/dnsimple/records.rb +7 -7
  145. data/lib/fog/dns/models/dnsimple/zones.rb +2 -1
  146. data/lib/fog/dns/requests/dnsimple/get_record.rb +34 -0
  147. data/lib/fog/dns/slicehost.rb +5 -6
  148. data/lib/fog/dns/zerigo.rb +5 -7
  149. data/lib/fog/providers.rb +2 -1
  150. data/lib/fog/providers/aws.rb +10 -8
  151. data/lib/fog/providers/virtual_box.rb +11 -0
  152. data/lib/fog/storage.rb +21 -0
  153. data/lib/fog/storage/aws.rb +16 -32
  154. data/lib/fog/storage/google.rb +6 -27
  155. data/lib/fog/storage/local.rb +7 -7
  156. data/lib/fog/storage/models/rackspace/directory.rb +1 -1
  157. data/lib/fog/storage/models/rackspace/file.rb +1 -0
  158. data/lib/fog/storage/rackspace.rb +5 -27
  159. data/lib/fog/storage/requests/aws/put_object.rb +2 -2
  160. data/lib/fog/storage/requests/aws/upload_part.rb +1 -1
  161. data/lib/fog/storage/requests/google/put_object.rb +2 -2
  162. data/lib/fog/storage/requests/rackspace/put_object.rb +1 -1
  163. data/tests/aws/requests/cloud_formation/stack_tests.rb +130 -0
  164. data/tests/aws/requests/iam/login_profile_tests.rb +64 -0
  165. data/tests/aws/requests/rds/helper.rb +169 -0
  166. data/tests/aws/requests/rds/instance_tests.rb +129 -0
  167. data/tests/aws/requests/rds/model_tests.rb +98 -0
  168. data/tests/aws/requests/rds/parameter_group_tests.rb +68 -0
  169. data/tests/aws/requests/rds/parameter_request_tests.rb +35 -0
  170. data/tests/compute/models/aws/server_monitor_tests.rb +47 -0
  171. data/tests/compute/models/server_tests.rb +7 -23
  172. data/tests/compute/parsers/aws/monitor_unmonitor_instances_tests.rb +49 -0
  173. data/tests/compute/requests/aws/security_group_tests.rb +69 -52
  174. data/tests/compute/requests/aws/tag_tests.rb +5 -5
  175. data/tests/compute/requests/brightbox/helper.rb +7 -6
  176. data/tests/compute/requests/brightbox/server_tests.rb +5 -0
  177. data/tests/compute/requests/voxel/server_tests.rb +2 -3
  178. data/tests/storage/requests/aws/bucket_tests.rb +10 -0
  179. metadata +148 -12
@@ -0,0 +1,43 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/rds/models/security_group'
3
+
4
+ module Fog
5
+ module AWS
6
+ class RDS
7
+
8
+ class SecurityGroups < Fog::Collection
9
+ attribute :server
10
+ attribute :filters
11
+ model Fog::AWS::RDS::SecurityGroup
12
+
13
+ def initialize(attributes={})
14
+ self.filters ||= {}
15
+ if attributes[:server]
16
+ filters[:identifier] = attributes[:server].id
17
+ end
18
+ super
19
+ end
20
+
21
+ def all(filters = filters)
22
+ self.filters = filters
23
+ data = connection.describe_db_security_groups(filters).body['DescribeDBSecurityGroupsResult']['DBSecurityGroups']
24
+ load(data) # data is an array of attribute hashes
25
+ end
26
+
27
+ # Example:
28
+ # get('my_db_security_group') # => model for my_db_security_group
29
+ def get(identity)
30
+ data = connection.describe_db_security_groups(identity).body['DescribeDBSecurityGroupsResult']['DBSecurityGroups'].first
31
+ new(data) # data is an attribute hash
32
+ rescue Fog::AWS::RDS::NotFound
33
+ nil
34
+ end
35
+
36
+ def new(attributes = {})
37
+ super
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,105 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class RDS
6
+
7
+ class Server < Fog::Model
8
+
9
+ identity :id, :aliases => 'DBInstanceIdentifier'
10
+ attribute :engine, :aliases => 'Engine'
11
+ attribute :engine_version, :aliases => 'EngineVersion'
12
+ attribute :state, :aliases => 'DBInstanceStatus'
13
+ attribute :allocated_storage, :aliases => 'AllocatedStorage', :type => :integer
14
+ attribute :availability_zone , :aliases => 'AvailabilityZone'
15
+ attribute :flavor_id, :aliases => 'DBInstanceClass'
16
+ attribute :endpoint, :aliases => 'Endpoint'
17
+ attribute :read_replica_source, :aliases => 'ReadReplicaSourceDBInstanceIdentifier'
18
+ attribute :read_replica_identifiers, :aliases => 'ReadReplicaDBInstanceIdentifiers', :type => :array
19
+ attribute :master_username, :aliases => 'MasterUsername'
20
+ attribute :multi_az, :aliases => 'MultiAZ'
21
+ attribute :created_at, :aliases => 'InstanceCreateTime', :type => :time
22
+ attribute :last_restorable_time, :aliases => 'LatestRestorableTime', :type => :time
23
+ attribute :auto_minor_version_upgrade, :aliases => 'AutoMinorVersionUpgrade'
24
+ attribute :pending_modified_values, :aliases => 'PendingModifiedValues'
25
+ attribute :preferred_backup_window, :aliases => 'PreferredBackupWindow'
26
+ attribute :preferred_maintenance_window, :aliases => 'PreferredMaintenanceWindow'
27
+ attribute :db_name, :aliases => 'DBName'
28
+ attribute :db_security_groups, :aliases => 'DBSecurityGroups'
29
+ attribute :db_parameter_groups, :aliases => 'DBParameterGroups'
30
+ attribute :backup_retention_period, :aliases => 'BackupRetentionPeriod', :type => :integer
31
+
32
+ attr_accessor :password, :parameter_group_name, :security_group_names, :port
33
+
34
+ def initialize(attributes={})
35
+ self.flavor_id ||= 'db.m1.small'
36
+ super
37
+ end
38
+
39
+ def create_read_replica(replica_id, options={})
40
+ connection.create_db_instance_read_replica(replica_id, id, options)
41
+ connection.servers.get(replica_id)
42
+ end
43
+
44
+ def ready?
45
+ state == 'available'
46
+ end
47
+
48
+ def destroy(snapshot_identifier)
49
+ requires :id
50
+ connection.delete_db_instance(id, snapshot_identifier, snapshot_identifier.nil?)
51
+ true
52
+ end
53
+
54
+ def reboot
55
+ connection.reboot_db_instance(id)
56
+ true
57
+ end
58
+
59
+ def snapshots
60
+ requires :id
61
+ connection.snapshots(:server => self)
62
+ end
63
+
64
+ def modify(immediately, options)
65
+ data = connection.modify_db_instance(id, immediately, options)
66
+ merge_attributes(data.body['ModifyDBInstanceResult']['DBInstance'])
67
+ true
68
+ end
69
+
70
+ def save
71
+ requires :engine
72
+ requires :allocated_storage
73
+ requires :master_username
74
+ requires :password
75
+ options = {
76
+ 'AllocatedStorage' => allocated_storage,
77
+ 'AutoMinorVersionUpgrade' => auto_minor_version_upgrade,
78
+ 'BackupRetentionPeriod' => backup_retention_period,
79
+ 'DBName' => db_name,
80
+ 'DBParameterGroupName' => parameter_group_name,
81
+ 'DBSecurityGroups' => security_group_names,
82
+ 'DBInstanceIdentifier' => id,
83
+ 'AvailabilityZone' => availability_zone,
84
+ 'DBInstanceClass' => flavor_id,
85
+ 'Port' => port,
86
+ 'Engine' => engine,
87
+ 'EngineVersion' => engine_version,
88
+ 'MasterUsername' => master_username,
89
+ 'MasterUserPassword' => password,
90
+ 'PreferredMaintenanceWindow' => preferred_maintenance_window,
91
+ 'PreferredBackupWindow' => preferred_backup_window,
92
+ 'MultiAZ' => multi_az
93
+ }
94
+ options.delete_if {|key, value| value.nil?}
95
+
96
+
97
+ data = connection.create_db_instance(id, options)
98
+ merge_attributes(data.body['CreateDBInstanceResult']['DBInstance'])
99
+ true
100
+ end
101
+
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,27 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/rds/models/server'
3
+
4
+ module Fog
5
+ module AWS
6
+ class RDS
7
+
8
+ class Servers < Fog::Collection
9
+
10
+ model Fog::AWS::RDS::Server
11
+
12
+ def all
13
+ data = connection.describe_db_instances.body['DescribeDBInstancesResult']['DBInstances']
14
+ load(data) # data is an array of attribute hashes
15
+ end
16
+
17
+ def get(identity)
18
+ data = connection.describe_db_instances(identity).body['DescribeDBInstancesResult']['DBInstances'].first
19
+ new(data) # data is an attribute hash
20
+ rescue Fog::AWS::RDS::NotFound
21
+ nil
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,49 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class RDS
6
+
7
+ class Snapshot < Fog::Model
8
+
9
+ identity :id, :aliases => ['DBSnapshotIdentifier', :name]
10
+ attribute :instance_id, :aliases => 'DBInstanceIdentifier'
11
+ attribute :created_at, :aliases => 'SnapshotCreateTime', :type => :time
12
+ attribute :instance_created_at, :aliases => 'InstanceCreateTime', :type => :time
13
+ attribute :engine, :aliases => 'Engine'
14
+ attribute :engine_version, :aliases => 'EngineVersion'
15
+ attribute :master_username, :aliases => 'MasterUsername'
16
+ attribute :state, :aliases => 'Status'
17
+ attribute :port, :aliases => 'Port', :type => :integer
18
+ attribute :allocated_storage, :aliases => 'AllocatedStorage', :type => :integer
19
+ attribute :availability_zone, :aliases => 'AvailabilityZone'
20
+
21
+ def ready?
22
+ state == 'available'
23
+ end
24
+
25
+ def destroy
26
+ requires :id
27
+
28
+ connection.delete_db_snapshot(id)
29
+ true
30
+ end
31
+
32
+ def save
33
+ requires :instance_id
34
+ requires :id
35
+
36
+ data = connection.create_db_snapshot(instance_id, id).body['CreateDBSnapshotResult']['DBSnapshot']
37
+ merge_attributes(data)
38
+ true
39
+ end
40
+
41
+ def server
42
+ requires :instance_id
43
+ connection.servers.get(instance_id)
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,45 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/rds/models/snapshot'
3
+
4
+ module Fog
5
+ module AWS
6
+ class RDS
7
+
8
+ class Snapshots < Fog::Collection
9
+ attribute :server
10
+ attribute :filters
11
+ model Fog::AWS::RDS::Snapshot
12
+
13
+ def initialize(attributes)
14
+ self.filters ||= {}
15
+ if attributes[:server]
16
+ filters[:identifier] = attributes[:server].id
17
+ end
18
+ super
19
+ end
20
+
21
+ def all(filters = filters)
22
+ self.filters = filters
23
+ data = connection.describe_db_snapshots(filters).body['DescribeDBSnapshotsResult']['DBSnapshots']
24
+ load(data) # data is an array of attribute hashes
25
+ end
26
+
27
+ def get(identity)
28
+ data = connection.describe_db_snapshots(:snapshot_id => identity).body['DescribeDBSnapshotsResult']['DBSnapshots'].first
29
+ new(data) # data is an attribute hash
30
+ rescue Fog::AWS::RDS::NotFound
31
+ nil
32
+ end
33
+
34
+ def new(attributes = {})
35
+ if server
36
+ super({ :instance_id => server.id }.merge!(attributes))
37
+ else
38
+ super
39
+ end
40
+ end
41
+
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,71 @@
1
+ module Fog
2
+ module AWS
3
+ class CloudFormation
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/cloud_formation/create_stack'
7
+
8
+ # Create a stack
9
+ #
10
+ # ==== Parameters
11
+ # * stack_name<~String>: name of the stack to create
12
+ # * options<~Hash>:
13
+ # * TemplateBody<~String>: structure containing the template body
14
+ # or (one of the two Template parameters is required)
15
+ # * TemplateURL<~String>: URL of file containing the template body
16
+ # * DisableRollback<~Boolean>: Controls rollback on stack creation failure, defaults to false
17
+ # * NotificationARNs<~Array>: List of SNS topics to publish events to
18
+ # * Parameters<~Hash>: Hash of providers to supply to template
19
+ # * TimeoutInMinutes<~Integer>: Minutes to wait before status is set to CREATE_FAILED
20
+ #
21
+ # ==== Returns
22
+ # * response<~Excon::Response>:
23
+ # * body<~Hash>:
24
+ # * 'StackId'<~String> - Id of the new stack
25
+ #
26
+ # ==== See Also
27
+ # http://docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html
28
+ #
29
+ def create_stack(stack_name, options = {})
30
+ params = {
31
+ 'StackName' => stack_name,
32
+ }
33
+
34
+ if options['DisableRollback']
35
+ params['DisableRollback'] = options['DisableRollback']
36
+ end
37
+
38
+ if options['NotificationARNs']
39
+ params.merge!(AWS.indexed_param("NotificationARNs.member", [*options['NotificationARNs']]))
40
+ end
41
+
42
+ if options['Parameters']
43
+ options['Parameters'].keys.each_with_index do |key, index|
44
+ index += 1 # params are 1-indexed
45
+ params.merge!({
46
+ "Parameters.member.#{index}.ParameterKey" => key,
47
+ "Parameters.member.#{index}.ParameterValue" => options['Parameters'][key]
48
+ })
49
+ end
50
+ end
51
+
52
+ if options['TemplateBody']
53
+ params['TemplateBody'] = options['TemplateBody']
54
+ elsif options['TemplateURL']
55
+ params['TemplateURL'] = options['TemplateURL']
56
+ end
57
+
58
+ if options['TimeoutInMinutes']
59
+ params['TimeoutInMinutes'] = options['TimeoutInMinutes']
60
+ end
61
+
62
+ request({
63
+ 'Action' => 'CreateStack',
64
+ :parser => Fog::Parsers::AWS::CloudFormation::CreateStack.new
65
+ }.merge!(params))
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module AWS
3
+ class CloudFormation
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/cloud_formation/basic'
7
+
8
+ # Delete a stack
9
+ #
10
+ # ==== Parameters
11
+ # * stack_name<~String>: name of the stack to create
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ #
16
+ # ==== See Also
17
+ # http://docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html
18
+ #
19
+ def delete_stack(stack_name)
20
+ request(
21
+ 'Action' => 'DeleteStack',
22
+ 'StackName' => stack_name,
23
+ :parser => Fog::Parsers::AWS::CloudFormation::Basic.new
24
+ )
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module AWS
3
+ class CloudFormation
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/cloud_formation/describe_stack_events'
7
+
8
+ # Describe stack events
9
+ #
10
+ # ==== Parameters
11
+ # * stack_name<~String>: stack name to return events for
12
+ # * options<~Hash>:
13
+ # * NextToken<~String>: identifies the start of the next list of events, if there is one
14
+ #
15
+ # ==== Returns
16
+ # * response<~Excon::Response>:
17
+ # * body<~Hash>:
18
+ # * 'StackEvents'<~Array> - Matching resources
19
+ # * event<~Hash>:
20
+ # * 'EventId'<~String> -
21
+ # * 'StackId'<~String> -
22
+ # * 'StackName'<~String> -
23
+ # * 'LogicalResourceId'<~String> -
24
+ # * 'PhysicalResourceId'<~String> -
25
+ # * 'ResourceType'<~String> -
26
+ # * 'Timestamp'<~Time> -
27
+ # * 'ResourceStatus'<~String> -
28
+ # * 'ResourceStatusReason'<~String> -
29
+ #
30
+ # ==== See Also
31
+ # http://docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html
32
+ #
33
+ def describe_stack_events(stack_name, options = {})
34
+ request({
35
+ 'Action' => 'DescribeStackEvents',
36
+ 'StackName' => stack_name,
37
+ :parser => Fog::Parsers::AWS::CloudFormation::DescribeStackEvents.new
38
+ }.merge!(options))
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module AWS
3
+ class CloudFormation
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/cloud_formation/describe_stack_resources'
7
+
8
+ # Describe stack resources
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * 'PhysicalResourceId'<~String>: name or unique identifier that corresponds to a physical instance ID
13
+ # or (one of PhysicalResourceId and StackName is required)
14
+ # * 'StackName'<~String>: only return events related to this stack name
15
+ # * 'LogicalResourceId'<~String>: logical name of the resource as specified in the template
16
+ #
17
+ # ==== Returns
18
+ # * response<~Excon::Response>:
19
+ # * body<~Hash>:
20
+ # * 'StackResources'<~Array> - Matching resources
21
+ # * resource<~Hash>:
22
+ # * 'StackId'<~String> -
23
+ # * 'StackName'<~String> -
24
+ # * 'LogicalResourceId'<~String> -
25
+ # * 'PhysicalResourceId'<~String> -
26
+ # * 'ResourceType'<~String> -
27
+ # * 'Timestamp'<~Time> -
28
+ # * 'ResourceStatus'<~String> -
29
+ #
30
+ # ==== See Also
31
+ # http://docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResources.html
32
+ #
33
+ def describe_stack_resources(options = {})
34
+ request({
35
+ 'Action' => 'DescribeStackResources',
36
+ :parser => Fog::Parsers::AWS::CloudFormation::DescribeStackResources.new
37
+ }.merge!(options))
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end