fog 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +11 -6
- data/changelog.txt +49 -0
- data/fog.gemspec +5 -4
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/cloud_formation.rb +124 -0
- data/lib/fog/aws/elb.rb +4 -1
- data/lib/fog/aws/iam.rb +6 -0
- data/lib/fog/aws/parsers/cloud_formation/basic.rb +12 -0
- data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +19 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +31 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +31 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +72 -0
- data/lib/fog/aws/parsers/cloud_formation/get_template.rb +19 -0
- data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +52 -0
- data/lib/fog/aws/parsers/iam/login_profile.rb +27 -0
- data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +26 -0
- data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +38 -0
- data/lib/fog/aws/parsers/rds/create_db_instance.rb +34 -0
- data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +34 -0
- data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +35 -0
- data/lib/fog/aws/parsers/rds/create_db_security_group.rb +38 -0
- data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +35 -0
- data/lib/fog/aws/parsers/rds/db_parser.rb +123 -0
- data/lib/fog/aws/parsers/rds/delete_db_instance.rb +35 -0
- data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +27 -0
- data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +33 -0
- data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +34 -0
- data/lib/fog/aws/parsers/rds/describe_db_instances.rb +36 -0
- data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +38 -0
- data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +44 -0
- data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +39 -0
- data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +39 -0
- data/lib/fog/aws/parsers/rds/modify_db_instance.rb +34 -0
- data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +28 -0
- data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +35 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +34 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +35 -0
- data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +39 -0
- data/lib/fog/aws/parsers/rds/security_group_parser.rb +39 -0
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +40 -0
- data/lib/fog/aws/rds.rb +161 -0
- data/lib/fog/aws/rds/models/parameter.rb +21 -0
- data/lib/fog/aws/rds/models/parameter_group.rb +36 -0
- data/lib/fog/aws/rds/models/parameter_groups.rb +27 -0
- data/lib/fog/aws/rds/models/parameters.rb +37 -0
- data/lib/fog/aws/rds/models/security_group.rb +73 -0
- data/lib/fog/aws/rds/models/security_groups.rb +43 -0
- data/lib/fog/aws/rds/models/server.rb +105 -0
- data/lib/fog/aws/rds/models/servers.rb +27 -0
- data/lib/fog/aws/rds/models/snapshot.rb +49 -0
- data/lib/fog/aws/rds/models/snapshots.rb +45 -0
- data/lib/fog/aws/requests/cloud_formation/create_stack.rb +71 -0
- data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +30 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +44 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +43 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +42 -0
- data/lib/fog/aws/requests/cloud_formation/get_template.rb +32 -0
- data/lib/fog/aws/requests/cloud_formation/validate_template.rb +34 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +4 -0
- data/lib/fog/aws/requests/iam/create_login_profile.rb +36 -0
- data/lib/fog/aws/requests/iam/delete_login_profile.rb +31 -0
- data/lib/fog/aws/requests/iam/delete_server_certificate.rb +32 -0
- data/lib/fog/aws/requests/iam/get_login_profile.rb +35 -0
- data/lib/fog/aws/requests/iam/update_login_profile.rb +33 -0
- data/lib/fog/aws/requests/iam/upload_server_certificate.rb +45 -0
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +43 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +56 -0
- data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +42 -0
- data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +41 -0
- data/lib/fog/aws/requests/rds/create_db_security_group.rb +37 -0
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_instance.rb +40 -0
- data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_security_group.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +36 -0
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +42 -0
- data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +45 -0
- data/lib/fog/aws/requests/rds/describe_db_parameters.rb +46 -0
- data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +39 -0
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +42 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +54 -0
- data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +55 -0
- data/lib/fog/aws/requests/rds/reboot_db_instance.rb +34 -0
- data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +34 -0
- data/lib/fog/aws/requests/rds/restore_db_instance_to_point_in_time.rb +35 -0
- data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +44 -0
- data/lib/fog/aws/simpledb.rb +21 -7
- data/lib/fog/bin.rb +2 -1
- data/lib/fog/bin/aws.rb +8 -0
- data/lib/fog/bin/virtual_box.rb +52 -0
- data/lib/fog/cdn/aws.rb +9 -8
- data/lib/fog/cdn/rackspace.rb +6 -6
- data/lib/fog/cdn/requests/rackspace/post_container.rb +30 -0
- data/lib/fog/cdn/requests/rackspace/put_container.rb +1 -1
- data/lib/fog/compute.rb +6 -3
- data/lib/fog/compute/aws.rb +11 -7
- data/lib/fog/compute/bluebox.rb +5 -6
- data/lib/fog/compute/brightbox.rb +3 -0
- data/lib/fog/compute/go_grid.rb +5 -6
- data/lib/fog/compute/linode.rb +5 -6
- data/lib/fog/compute/models/aws/flavors.rb +19 -18
- data/lib/fog/compute/models/aws/server.rb +23 -0
- data/lib/fog/compute/models/aws/tag.rb +1 -1
- data/lib/fog/compute/models/brightbox/server.rb +7 -1
- data/lib/fog/compute/models/virtual_box/medium.rb +87 -0
- data/lib/fog/compute/models/virtual_box/medium_format.rb +34 -0
- data/lib/fog/compute/models/virtual_box/mediums.rb +32 -0
- data/lib/fog/compute/models/virtual_box/nat_engine.rb +65 -0
- data/lib/fog/compute/models/virtual_box/nat_redirect.rb +91 -0
- data/lib/fog/compute/models/virtual_box/nat_redirects.rb +41 -0
- data/lib/fog/compute/models/virtual_box/network_adapter.rb +82 -0
- data/lib/fog/compute/models/virtual_box/network_adapters.rb +42 -0
- data/lib/fog/compute/models/virtual_box/server.rb +241 -0
- data/lib/fog/compute/models/virtual_box/servers.rb +41 -0
- data/lib/fog/compute/models/virtual_box/storage_controller.rb +83 -0
- data/lib/fog/compute/models/virtual_box/storage_controllers.rb +38 -0
- data/lib/fog/compute/models/voxel/servers.rb +7 -6
- data/lib/fog/compute/new_servers.rb +5 -6
- data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +35 -0
- data/lib/fog/compute/rackspace.rb +7 -7
- data/lib/fog/compute/requests/aws/delete_tags.rb +12 -9
- data/lib/fog/compute/requests/aws/monitor_instances.rb +52 -0
- data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +24 -8
- data/lib/fog/compute/requests/aws/unmonitor_instances.rb +53 -0
- data/lib/fog/compute/requests/brightbox/activate_console_server.rb +20 -0
- data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +20 -0
- data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +20 -0
- data/lib/fog/compute/slicehost.rb +5 -6
- data/lib/fog/compute/virtual_box.rb +48 -0
- data/lib/fog/compute/voxel.rb +30 -27
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/attributes.rb +3 -1
- data/lib/fog/core/collection.rb +2 -2
- data/lib/fog/core/credentials.rb +13 -3
- data/lib/fog/core/scp.rb +0 -4
- data/lib/fog/core/service.rb +0 -8
- data/lib/fog/core/ssh.rb +0 -4
- data/lib/fog/dns.rb +3 -3
- data/lib/fog/dns/aws.rb +8 -8
- data/lib/fog/dns/bluebox.rb +5 -7
- data/lib/fog/dns/dnsimple.rb +7 -7
- data/lib/fog/dns/linode.rb +5 -6
- data/lib/fog/dns/models/dnsimple/record.rb +11 -1
- data/lib/fog/dns/models/dnsimple/records.rb +7 -7
- data/lib/fog/dns/models/dnsimple/zones.rb +2 -1
- data/lib/fog/dns/requests/dnsimple/get_record.rb +34 -0
- data/lib/fog/dns/slicehost.rb +5 -6
- data/lib/fog/dns/zerigo.rb +5 -7
- data/lib/fog/providers.rb +2 -1
- data/lib/fog/providers/aws.rb +10 -8
- data/lib/fog/providers/virtual_box.rb +11 -0
- data/lib/fog/storage.rb +21 -0
- data/lib/fog/storage/aws.rb +16 -32
- data/lib/fog/storage/google.rb +6 -27
- data/lib/fog/storage/local.rb +7 -7
- data/lib/fog/storage/models/rackspace/directory.rb +1 -1
- data/lib/fog/storage/models/rackspace/file.rb +1 -0
- data/lib/fog/storage/rackspace.rb +5 -27
- data/lib/fog/storage/requests/aws/put_object.rb +2 -2
- data/lib/fog/storage/requests/aws/upload_part.rb +1 -1
- data/lib/fog/storage/requests/google/put_object.rb +2 -2
- data/lib/fog/storage/requests/rackspace/put_object.rb +1 -1
- data/tests/aws/requests/cloud_formation/stack_tests.rb +130 -0
- data/tests/aws/requests/iam/login_profile_tests.rb +64 -0
- data/tests/aws/requests/rds/helper.rb +169 -0
- data/tests/aws/requests/rds/instance_tests.rb +129 -0
- data/tests/aws/requests/rds/model_tests.rb +98 -0
- data/tests/aws/requests/rds/parameter_group_tests.rb +68 -0
- data/tests/aws/requests/rds/parameter_request_tests.rb +35 -0
- data/tests/compute/models/aws/server_monitor_tests.rb +47 -0
- data/tests/compute/models/server_tests.rb +7 -23
- data/tests/compute/parsers/aws/monitor_unmonitor_instances_tests.rb +49 -0
- data/tests/compute/requests/aws/security_group_tests.rb +69 -52
- data/tests/compute/requests/aws/tag_tests.rb +5 -5
- data/tests/compute/requests/brightbox/helper.rb +7 -6
- data/tests/compute/requests/brightbox/server_tests.rb +5 -0
- data/tests/compute/requests/voxel/server_tests.rb +2 -3
- data/tests/storage/requests/aws/bucket_tests.rb +10 -0
- 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
|