Add support for VpcSecurityGroups set/update in RDS

This commit is contained in:
Berislav Kovacki 2019-07-13 08:19:23 +02:00
parent 396cb39676
commit 4ed189c454
3 changed files with 19 additions and 5 deletions

View File

@ -149,7 +149,14 @@ class Database(BaseModel):
<DBInstanceStatus>{{ database.status }}</DBInstanceStatus> <DBInstanceStatus>{{ database.status }}</DBInstanceStatus>
{% if database.db_name %}<DBName>{{ database.db_name }}</DBName>{% endif %} {% if database.db_name %}<DBName>{{ database.db_name }}</DBName>{% endif %}
<MultiAZ>{{ database.multi_az }}</MultiAZ> <MultiAZ>{{ database.multi_az }}</MultiAZ>
<VpcSecurityGroups/> <VpcSecurityGroups>
{% for vpc_security_group_id in database.vpc_security_group_ids %}
<VpcSecurityGroupMembership>
<Status>active</Status>
<VpcSecurityGroupId>{{ vpc_security_group_id }}</VpcSecurityGroupId>
</VpcSecurityGroupMembership>
{% endfor %}
</VpcSecurityGroups>
<DBInstanceIdentifier>{{ database.db_instance_identifier }}</DBInstanceIdentifier> <DBInstanceIdentifier>{{ database.db_instance_identifier }}</DBInstanceIdentifier>
<DbiResourceId>{{ database.dbi_resource_id }}</DbiResourceId> <DbiResourceId>{{ database.dbi_resource_id }}</DbiResourceId>
<InstanceCreateTime>{{ database.instance_create_time }}</InstanceCreateTime> <InstanceCreateTime>{{ database.instance_create_time }}</InstanceCreateTime>
@ -323,6 +330,7 @@ class Database(BaseModel):
"storage_encrypted": properties.get("StorageEncrypted"), "storage_encrypted": properties.get("StorageEncrypted"),
"storage_type": properties.get("StorageType"), "storage_type": properties.get("StorageType"),
"tags": properties.get("Tags"), "tags": properties.get("Tags"),
"vpc_security_group_ids": properties.get('VpcSecurityGroupIds', []),
} }
rds2_backend = rds2_backends[region_name] rds2_backend = rds2_backends[region_name]
@ -397,10 +405,12 @@ class Database(BaseModel):
"SecondaryAvailabilityZone": null, "SecondaryAvailabilityZone": null,
"StatusInfos": null, "StatusInfos": null,
"VpcSecurityGroups": [ "VpcSecurityGroups": [
{% for vpc_security_group_id in database.vpc_security_group_ids %}
{ {
"Status": "active", "Status": "active",
"VpcSecurityGroupId": "sg-123456" "VpcSecurityGroupId": "{{ vpc_security_group_id }}"
} }
{% endfor %}
], ],
"DBInstanceArn": "{{ database.db_instance_arn }}" "DBInstanceArn": "{{ database.db_instance_arn }}"
}""") }""")

View File

@ -43,7 +43,7 @@ class RDS2Response(BaseResponse):
"security_groups": self._get_multi_param('DBSecurityGroups.DBSecurityGroupName'), "security_groups": self._get_multi_param('DBSecurityGroups.DBSecurityGroupName'),
"storage_encrypted": self._get_param("StorageEncrypted"), "storage_encrypted": self._get_param("StorageEncrypted"),
"storage_type": self._get_param("StorageType", 'standard'), "storage_type": self._get_param("StorageType", 'standard'),
# VpcSecurityGroupIds.member.N "vpc_security_group_ids": self._get_multi_param("VpcSecurityGroupIds.VpcSecurityGroupId"),
"tags": list(), "tags": list(),
} }
args['tags'] = self.unpack_complex_list_params( args['tags'] = self.unpack_complex_list_params(

View File

@ -18,7 +18,8 @@ def test_create_database():
MasterUsername='root', MasterUsername='root',
MasterUserPassword='hunter2', MasterUserPassword='hunter2',
Port=1234, Port=1234,
DBSecurityGroups=["my_sg"]) DBSecurityGroups=["my_sg"],
VpcSecurityGroupIds=['sg-123456'])
db_instance = database['DBInstance'] db_instance = database['DBInstance']
db_instance['AllocatedStorage'].should.equal(10) db_instance['AllocatedStorage'].should.equal(10)
db_instance['DBInstanceClass'].should.equal("db.m1.small") db_instance['DBInstanceClass'].should.equal("db.m1.small")
@ -35,6 +36,7 @@ def test_create_database():
db_instance['DbiResourceId'].should.contain("db-") db_instance['DbiResourceId'].should.contain("db-")
db_instance['CopyTagsToSnapshot'].should.equal(False) db_instance['CopyTagsToSnapshot'].should.equal(False)
db_instance['InstanceCreateTime'].should.be.a("datetime.datetime") db_instance['InstanceCreateTime'].should.be.a("datetime.datetime")
db_instance['VpcSecurityGroups'][0]['VpcSecurityGroupId'].should.equal('sg-123456')
@mock_rds2 @mock_rds2
@ -260,9 +262,11 @@ def test_modify_db_instance():
instances['DBInstances'][0]['AllocatedStorage'].should.equal(10) instances['DBInstances'][0]['AllocatedStorage'].should.equal(10)
conn.modify_db_instance(DBInstanceIdentifier='db-master-1', conn.modify_db_instance(DBInstanceIdentifier='db-master-1',
AllocatedStorage=20, AllocatedStorage=20,
ApplyImmediately=True) ApplyImmediately=True,
VpcSecurityGroupIds=['sg-123456'])
instances = conn.describe_db_instances(DBInstanceIdentifier='db-master-1') instances = conn.describe_db_instances(DBInstanceIdentifier='db-master-1')
instances['DBInstances'][0]['AllocatedStorage'].should.equal(20) instances['DBInstances'][0]['AllocatedStorage'].should.equal(20)
instances['DBInstances'][0]['VpcSecurityGroups'][0]['VpcSecurityGroupId'].should.equal('sg-123456')
@mock_rds2 @mock_rds2