Merge pull request #2 from behanceops/more-rds2-support

More rds2 support - Thanks Chris Henry.
This commit is contained in:
mfulleratlassian 2015-01-28 07:21:48 +11:00
commit 33b62d871f
3 changed files with 34 additions and 28 deletions

View File

@ -158,7 +158,7 @@ class Database(object):
return database return database
def to_json(self): def to_json(self):
template = Template(""""DBInstance": { template = Template("""{
"AllocatedStorage": 10, "AllocatedStorage": 10,
"AutoMinorVersionUpgrade": "{{ database.auto_minor_version_upgrade }}", "AutoMinorVersionUpgrade": "{{ database.auto_minor_version_upgrade }}",
"AvailabilityZone": "{{ database.availability_zone }}", "AvailabilityZone": "{{ database.availability_zone }}",
@ -222,7 +222,10 @@ class Database(object):
"PreferredMaintenanceWindow": "{{ database.preferred_maintenance_window }}", "PreferredMaintenanceWindow": "{{ database.preferred_maintenance_window }}",
"PubliclyAccessible": "{{ database.publicly_accessible }}", "PubliclyAccessible": "{{ database.publicly_accessible }}",
"AllocatedStorage": "{{ database.allocated_storage }}", "AllocatedStorage": "{{ database.allocated_storage }}",
"Endpoint": null, "Endpoint": {
"Address": "{{ database.address }}",
"Port": "{{ database.port }}"
},
"InstanceCreateTime": null, "InstanceCreateTime": null,
"Iops": null, "Iops": null,
"ReadReplicaDBInstanceIdentifiers": [{%- for replica in database.replicas -%} "ReadReplicaDBInstanceIdentifiers": [{%- for replica in database.replicas -%}

View File

@ -80,8 +80,7 @@ class RDS2Response(BaseResponse):
db_kwargs = self._get_db_kwargs() db_kwargs = self._get_db_kwargs()
database = self.backend.create_database(db_kwargs) database = self.backend.create_database(db_kwargs)
template = self.response_template(CREATE_DATABASE_TEMPLATE) template = self.response_template(CREATE_DATABASE_TEMPLATE)
result = template.render(database=database) return template.render(database=database)
return result
def create_dbinstance_read_replica(self): def create_dbinstance_read_replica(self):
return self.create_db_instance_read_replica() return self.create_db_instance_read_replica()
@ -245,7 +244,7 @@ class RDS2Response(BaseResponse):
CREATE_DATABASE_TEMPLATE = """{ CREATE_DATABASE_TEMPLATE = """{
"CreateDBInstanceResponse": { "CreateDBInstanceResponse": {
"CreateDBInstanceResult": { "CreateDBInstanceResult": {
{{ database.to_json() }} "DBInstance": {{ database.to_json() }}
}, },
"ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" } "ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" }
} }
@ -261,20 +260,22 @@ CREATE_DATABASE_REPLICA_TEMPLATE = """{
}""" }"""
DESCRIBE_DATABASES_TEMPLATE = """{ DESCRIBE_DATABASES_TEMPLATE = """{
"DescribeDBInstanceResponse": { "DescribeDBInstancesResponse": {
"DescribeDBInstanceResult": [ "DescribeDBInstancesResult": {
{%- for database in databases -%} "DBInstances": [
{%- if loop.index != 1 -%},{%- endif -%} {%- for database in databases -%}
{ {{ database.to_json() }} } {%- if loop.index != 1 -%},{%- endif -%}
{%- endfor -%} {{ database.to_json() }}
], {%- endfor -%}
]
},
"ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" } "ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" }
} }
}""" }"""
MODIFY_DATABASE_TEMPLATE = """{"ModifyDBInstanceResponse": { MODIFY_DATABASE_TEMPLATE = """{"ModifyDBInstanceResponse": {
"ModifyDBInstanceResult": { "ModifyDBInstanceResult": {
{{ database.to_json() }}, "DBInstance": {{ database.to_json() }},
"ResponseMetadata": { "ResponseMetadata": {
"RequestId": "bb58476c-a1a8-11e4-99cf-55e92d4bbada" "RequestId": "bb58476c-a1a8-11e4-99cf-55e92d4bbada"
} }
@ -284,22 +285,24 @@ MODIFY_DATABASE_TEMPLATE = """{"ModifyDBInstanceResponse": {
REBOOT_DATABASE_TEMPLATE = """{"RebootDBInstanceResponse": { REBOOT_DATABASE_TEMPLATE = """{"RebootDBInstanceResponse": {
"RebootDBInstanceResult": { "RebootDBInstanceResult": {
{{ database.to_json() }}, "DBInstance": {{ database.to_json() }},
"ResponseMetadata": { "ResponseMetadata": {
"RequestId": "d55711cb-a1ab-11e4-99cf-55e92d4bbada" "RequestId": "d55711cb-a1ab-11e4-99cf-55e92d4bbada"
}
} }
} }
}}""" }"""
# TODO: update delete DB TEMPLATE # TODO: update delete DB TEMPLATE
DELETE_DATABASE_TEMPLATE = """{ "DeleteDBInstanceResponse": { DELETE_DATABASE_TEMPLATE = """{ "DeleteDBInstanceResponse": {
"DeleteDBInstanceResult": { "DeleteDBInstanceResult": {
{{ database.to_json() }}, "DBInstance": {{ database.to_json() }}
},
"ResponseMetadata": { "ResponseMetadata": {
"RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4"
} }
} }
}}""" }"""
CREATE_SECURITY_GROUP_TEMPLATE = """<CreateDBSecurityGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/"> CREATE_SECURITY_GROUP_TEMPLATE = """<CreateDBSecurityGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
<CreateDBSecurityGroupResult> <CreateDBSecurityGroupResult>

View File

@ -34,7 +34,7 @@ def test_get_databases():
conn = boto.rds2.connect_to_region("us-west-2") conn = boto.rds2.connect_to_region("us-west-2")
instances = conn.describe_db_instances() instances = conn.describe_db_instances()
list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(0) list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(0)
conn.create_db_instance(db_instance_identifier='db-master-1', conn.create_db_instance(db_instance_identifier='db-master-1',
allocated_storage=10, allocated_storage=10,
@ -51,11 +51,11 @@ def test_get_databases():
master_user_password='hunter2', master_user_password='hunter2',
db_security_groups=["my_sg"]) db_security_groups=["my_sg"])
instances = conn.describe_db_instances() instances = conn.describe_db_instances()
list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(2) list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(2)
instances = conn.describe_db_instances("db-master-1") instances = conn.describe_db_instances("db-master-1")
list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(1) list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(1)
instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult'][0]['DBInstance']['DBInstanceIdentifier'].should.equal("db-master-1") instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances'][0]['DBInstanceIdentifier'].should.equal("db-master-1")
@disable_on_py3() @disable_on_py3()
@ -77,10 +77,10 @@ def test_modify_db_instance():
master_user_password='hunter2', master_user_password='hunter2',
db_security_groups=["my_sg"]) db_security_groups=["my_sg"])
instances = conn.describe_db_instances('db-master-1') instances = conn.describe_db_instances('db-master-1')
instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult'][0]['DBInstance']['AllocatedStorage'].should.equal('10') instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances'][0]['AllocatedStorage'].should.equal('10')
conn.modify_db_instance(db_instance_identifier='db-master-1', allocated_storage=20, apply_immediately=True) conn.modify_db_instance(db_instance_identifier='db-master-1', allocated_storage=20, apply_immediately=True)
instances = conn.describe_db_instances('db-master-1') instances = conn.describe_db_instances('db-master-1')
instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult'][0]['DBInstance']['AllocatedStorage'].should.equal('20') instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances'][0]['AllocatedStorage'].should.equal('20')
@disable_on_py3() @disable_on_py3()
@ -118,7 +118,7 @@ def test_reboot_non_existant_database():
def test_delete_database(): def test_delete_database():
conn = boto.rds2.connect_to_region("us-west-2") conn = boto.rds2.connect_to_region("us-west-2")
instances = conn.describe_db_instances() instances = conn.describe_db_instances()
list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(0) list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(0)
conn.create_db_instance(db_instance_identifier='db-master-1', conn.create_db_instance(db_instance_identifier='db-master-1',
allocated_storage=10, allocated_storage=10,
engine='postgres', engine='postgres',
@ -127,11 +127,11 @@ def test_delete_database():
master_user_password='hunter2', master_user_password='hunter2',
db_security_groups=["my_sg"]) db_security_groups=["my_sg"])
instances = conn.describe_db_instances() instances = conn.describe_db_instances()
list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(1) list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(1)
conn.delete_db_instance("db-master-1") conn.delete_db_instance("db-master-1")
instances = conn.describe_db_instances() instances = conn.describe_db_instances()
list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(0) list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(0)
@disable_on_py3() @disable_on_py3()