From df036fe207ad38f1821b56905c14836e7c375176 Mon Sep 17 00:00:00 2001 From: Chris Henry Date: Tue, 27 Jan 2015 01:28:38 -0500 Subject: [PATCH 1/5] rds2 model fixes. * Add the endpoint data to the to_json function. * Remove the DBInstance key from the to_json template. --- moto/rds2/models.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/moto/rds2/models.py b/moto/rds2/models.py index 228593dcc..63f0c07af 100644 --- a/moto/rds2/models.py +++ b/moto/rds2/models.py @@ -158,7 +158,7 @@ class Database(object): return database def to_json(self): - template = Template(""""DBInstance": { + template = Template("""{ "AllocatedStorage": 10, "AutoMinorVersionUpgrade": "{{ database.auto_minor_version_upgrade }}", "AvailabilityZone": "{{ database.availability_zone }}", @@ -222,7 +222,10 @@ class Database(object): "PreferredMaintenanceWindow": "{{ database.preferred_maintenance_window }}", "PubliclyAccessible": "{{ database.publicly_accessible }}", "AllocatedStorage": "{{ database.allocated_storage }}", - "Endpoint": null, + "Endpoint": { + "Address": "{{ database.address }}", + "Port": "{{ database.port }}" + }, "InstanceCreateTime": null, "Iops": null, "ReadReplicaDBInstanceIdentifiers": [{%- for replica in database.replicas -%} From f78d3b79dfc33a87c94e4e55f044e18fcd0586d5 Mon Sep 17 00:00:00 2001 From: Chris Henry Date: Tue, 27 Jan 2015 01:53:42 -0500 Subject: [PATCH 2/5] Fix json templates to include DBInstance element. --- moto/rds2/responses.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/moto/rds2/responses.py b/moto/rds2/responses.py index 54a132027..eb75ba1f4 100644 --- a/moto/rds2/responses.py +++ b/moto/rds2/responses.py @@ -80,8 +80,7 @@ class RDS2Response(BaseResponse): db_kwargs = self._get_db_kwargs() database = self.backend.create_database(db_kwargs) template = self.response_template(CREATE_DATABASE_TEMPLATE) - result = template.render(database=database) - return result + return template.render(database=database) def create_dbinstance_read_replica(self): return self.create_db_instance_read_replica() @@ -245,7 +244,7 @@ class RDS2Response(BaseResponse): CREATE_DATABASE_TEMPLATE = """{ "CreateDBInstanceResponse": { "CreateDBInstanceResult": { - {{ database.to_json() }} + "DBInstance": {{ database.to_json() }} }, "ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" } } @@ -261,20 +260,22 @@ CREATE_DATABASE_REPLICA_TEMPLATE = """{ }""" DESCRIBE_DATABASES_TEMPLATE = """{ - "DescribeDBInstanceResponse": { - "DescribeDBInstanceResult": [ - {%- for database in databases -%} - {%- if loop.index != 1 -%},{%- endif -%} - { {{ database.to_json() }} } - {%- endfor -%} - ], + "DescribeDBInstancesResponse": { + "DescribeDBInstancesResult": { + "DBInstances": [ + {%- for database in databases -%} + {%- if loop.index != 1 -%},{%- endif -%} + {{ database.to_json() }} + {%- endfor -%} + ] + }, "ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" } } }""" MODIFY_DATABASE_TEMPLATE = """{"ModifyDBInstanceResponse": { "ModifyDBInstanceResult": { - {{ database.to_json() }}, + "DBInstance": {{ database.to_json() }}, "ResponseMetadata": { "RequestId": "bb58476c-a1a8-11e4-99cf-55e92d4bbada" } @@ -284,22 +285,24 @@ MODIFY_DATABASE_TEMPLATE = """{"ModifyDBInstanceResponse": { REBOOT_DATABASE_TEMPLATE = """{"RebootDBInstanceResponse": { "RebootDBInstanceResult": { - {{ database.to_json() }}, - "ResponseMetadata": { - "RequestId": "d55711cb-a1ab-11e4-99cf-55e92d4bbada" + "DBInstance": {{ database.to_json() }}, + "ResponseMetadata": { + "RequestId": "d55711cb-a1ab-11e4-99cf-55e92d4bbada" + } } } -}}""" +}""" # TODO: update delete DB TEMPLATE DELETE_DATABASE_TEMPLATE = """{ "DeleteDBInstanceResponse": { "DeleteDBInstanceResult": { - {{ database.to_json() }}, + "DBInstance": {{ database.to_json() }} + }, "ResponseMetadata": { "RequestId": "523e3218-afc7-11c3-90f5-f90431260ab4" } } -}}""" +}""" CREATE_SECURITY_GROUP_TEMPLATE = """ From 7766588681f52c412e64f926969850181056d4ec Mon Sep 17 00:00:00 2001 From: Chris Henry Date: Tue, 27 Jan 2015 01:53:57 -0500 Subject: [PATCH 3/5] Tweak tests. --- Makefile | 2 +- tests/test_rds2/test_rds2.py | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 7521a6d88..e624689fc 100644 --- a/Makefile +++ b/Makefile @@ -6,5 +6,5 @@ init: test: rm -f .coverage - @nosetests -sv --with-coverage ./tests/ + @nosetests -sv --nocapture ./tests/ diff --git a/tests/test_rds2/test_rds2.py b/tests/test_rds2/test_rds2.py index 0b72b8ed7..7e50d1edf 100644 --- a/tests/test_rds2/test_rds2.py +++ b/tests/test_rds2/test_rds2.py @@ -34,7 +34,7 @@ def test_get_databases(): conn = boto.rds2.connect_to_region("us-west-2") 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', allocated_storage=10, @@ -51,11 +51,11 @@ def test_get_databases(): master_user_password='hunter2', db_security_groups=["my_sg"]) 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") - list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(1) - instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult'][0]['DBInstance']['DBInstanceIdentifier'].should.equal("db-master-1") + list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(1) + instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances'][0]['DBInstanceIdentifier'].should.equal("db-master-1") @disable_on_py3() @@ -77,10 +77,10 @@ def test_modify_db_instance(): master_user_password='hunter2', db_security_groups=["my_sg"]) 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) 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() @@ -118,7 +118,7 @@ def test_reboot_non_existant_database(): def test_delete_database(): conn = boto.rds2.connect_to_region("us-west-2") 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', allocated_storage=10, engine='postgres', @@ -127,11 +127,11 @@ def test_delete_database(): master_user_password='hunter2', db_security_groups=["my_sg"]) 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") 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() From 9e2a57732401b1bf31312a15a5734bfb026b9a1d Mon Sep 17 00:00:00 2001 From: Chris Henry Date: Tue, 27 Jan 2015 01:53:57 -0500 Subject: [PATCH 4/5] Tweak tests. --- tests/test_rds2/test_rds2.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/test_rds2/test_rds2.py b/tests/test_rds2/test_rds2.py index 0b72b8ed7..7e50d1edf 100644 --- a/tests/test_rds2/test_rds2.py +++ b/tests/test_rds2/test_rds2.py @@ -34,7 +34,7 @@ def test_get_databases(): conn = boto.rds2.connect_to_region("us-west-2") 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', allocated_storage=10, @@ -51,11 +51,11 @@ def test_get_databases(): master_user_password='hunter2', db_security_groups=["my_sg"]) 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") - list(instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult']).should.have.length_of(1) - instances['DescribeDBInstanceResponse']['DescribeDBInstanceResult'][0]['DBInstance']['DBInstanceIdentifier'].should.equal("db-master-1") + list(instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances']).should.have.length_of(1) + instances['DescribeDBInstancesResponse']['DescribeDBInstancesResult']['DBInstances'][0]['DBInstanceIdentifier'].should.equal("db-master-1") @disable_on_py3() @@ -77,10 +77,10 @@ def test_modify_db_instance(): master_user_password='hunter2', db_security_groups=["my_sg"]) 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) 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() @@ -118,7 +118,7 @@ def test_reboot_non_existant_database(): def test_delete_database(): conn = boto.rds2.connect_to_region("us-west-2") 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', allocated_storage=10, engine='postgres', @@ -127,11 +127,11 @@ def test_delete_database(): master_user_password='hunter2', db_security_groups=["my_sg"]) 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") 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() From 8f463325690fb945ffb88437eced47f59b113208 Mon Sep 17 00:00:00 2001 From: Chris Henry Date: Tue, 27 Jan 2015 09:29:51 -0500 Subject: [PATCH 5/5] Change Makefile back to original. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e624689fc..7521a6d88 100644 --- a/Makefile +++ b/Makefile @@ -6,5 +6,5 @@ init: test: rm -f .coverage - @nosetests -sv --nocapture ./tests/ + @nosetests -sv --with-coverage ./tests/