2022-03-09 11:05:18 +00:00
|
|
|
from collections import defaultdict
|
|
|
|
|
2015-01-09 03:18:06 +00:00
|
|
|
from moto.core.responses import BaseResponse
|
2015-01-09 05:17:20 +00:00
|
|
|
from moto.ec2.models import ec2_backends
|
2015-01-09 03:18:06 +00:00
|
|
|
from .models import rds_backends
|
2022-03-09 11:05:18 +00:00
|
|
|
from .exceptions import DBParameterGroupNotFoundError
|
2015-01-09 03:18:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
class RDSResponse(BaseResponse):
|
2022-08-13 09:49:43 +00:00
|
|
|
def __init__(self):
|
|
|
|
super().__init__(service_name="rds")
|
|
|
|
|
2015-01-09 03:18:06 +00:00
|
|
|
@property
|
|
|
|
def backend(self):
|
2022-08-13 09:49:43 +00:00
|
|
|
return rds_backends[self.current_account][self.region]
|
2015-01-09 03:18:06 +00:00
|
|
|
|
2015-01-09 04:44:05 +00:00
|
|
|
def _get_db_kwargs(self):
|
2017-01-12 02:02:51 +00:00
|
|
|
args = {
|
2019-10-31 15:44:26 +00:00
|
|
|
"auto_minor_version_upgrade": self._get_param("AutoMinorVersionUpgrade"),
|
|
|
|
"allocated_storage": self._get_int_param("AllocatedStorage"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"availability_zone": self._get_param("AvailabilityZone"),
|
|
|
|
"backup_retention_period": self._get_param("BackupRetentionPeriod"),
|
2022-03-09 11:05:18 +00:00
|
|
|
"copy_tags_to_snapshot": self._get_param("CopyTagsToSnapshot"),
|
2019-10-31 15:44:26 +00:00
|
|
|
"db_instance_class": self._get_param("DBInstanceClass"),
|
2022-05-06 17:11:55 +00:00
|
|
|
"db_cluster_identifier": self._get_param("DBClusterIdentifier"),
|
2019-10-31 15:44:26 +00:00
|
|
|
"db_instance_identifier": self._get_param("DBInstanceIdentifier"),
|
2015-01-09 03:18:06 +00:00
|
|
|
"db_name": self._get_param("DBName"),
|
2022-03-09 11:05:18 +00:00
|
|
|
"db_parameter_group_name": self._get_param("DBParameterGroupName"),
|
|
|
|
"db_snapshot_identifier": self._get_param("DBSnapshotIdentifier"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"db_subnet_group_name": self._get_param("DBSubnetGroupName"),
|
|
|
|
"engine": self._get_param("Engine"),
|
|
|
|
"engine_version": self._get_param("EngineVersion"),
|
2022-05-09 08:40:16 +00:00
|
|
|
"enable_cloudwatch_logs_exports": self._get_params().get(
|
|
|
|
"EnableCloudwatchLogsExports"
|
|
|
|
),
|
2022-03-09 11:05:18 +00:00
|
|
|
"enable_iam_database_authentication": self._get_bool_param(
|
|
|
|
"EnableIAMDatabaseAuthentication"
|
|
|
|
),
|
|
|
|
"license_model": self._get_param("LicenseModel"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"iops": self._get_int_param("Iops"),
|
2017-01-12 02:02:51 +00:00
|
|
|
"kms_key_id": self._get_param("KmsKeyId"),
|
2022-03-09 11:05:18 +00:00
|
|
|
"master_user_password": self._get_param("MasterUserPassword"),
|
2019-10-31 15:44:26 +00:00
|
|
|
"master_username": self._get_param("MasterUsername"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"multi_az": self._get_bool_param("MultiAZ"),
|
2022-03-09 11:05:18 +00:00
|
|
|
"option_group_name": self._get_param("OptionGroupName"),
|
2019-10-31 15:44:26 +00:00
|
|
|
"port": self._get_param("Port"),
|
2015-01-09 03:18:06 +00:00
|
|
|
# PreferredBackupWindow
|
|
|
|
# PreferredMaintenanceWindow
|
2015-01-10 18:50:37 +00:00
|
|
|
"publicly_accessible": self._get_param("PubliclyAccessible"),
|
2022-08-13 09:49:43 +00:00
|
|
|
"account_id": self.current_account,
|
2015-01-10 18:50:37 +00:00
|
|
|
"region": self.region,
|
2022-03-09 11:05:18 +00:00
|
|
|
"security_groups": self._get_multi_param(
|
|
|
|
"DBSecurityGroups.DBSecurityGroupName"
|
|
|
|
),
|
2017-01-12 02:02:51 +00:00
|
|
|
"storage_encrypted": self._get_param("StorageEncrypted"),
|
2022-03-09 11:05:18 +00:00
|
|
|
"storage_type": self._get_param("StorageType", None),
|
|
|
|
"vpc_security_group_ids": self._get_multi_param(
|
|
|
|
"VpcSecurityGroupIds.VpcSecurityGroupId"
|
|
|
|
),
|
2017-01-12 02:02:51 +00:00
|
|
|
"tags": list(),
|
2022-03-09 11:05:18 +00:00
|
|
|
"deletion_protection": self._get_bool_param("DeletionProtection"),
|
2015-01-10 18:50:37 +00:00
|
|
|
}
|
2019-10-31 15:44:26 +00:00
|
|
|
args["tags"] = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
2017-01-12 02:02:51 +00:00
|
|
|
return args
|
2015-01-09 03:18:06 +00:00
|
|
|
|
2015-01-10 18:50:37 +00:00
|
|
|
def _get_db_replica_kwargs(self):
|
|
|
|
return {
|
2019-10-31 15:44:26 +00:00
|
|
|
"auto_minor_version_upgrade": self._get_param("AutoMinorVersionUpgrade"),
|
2015-01-09 03:18:06 +00:00
|
|
|
"availability_zone": self._get_param("AvailabilityZone"),
|
2019-10-31 15:44:26 +00:00
|
|
|
"db_instance_class": self._get_param("DBInstanceClass"),
|
|
|
|
"db_instance_identifier": self._get_param("DBInstanceIdentifier"),
|
2015-01-09 03:18:06 +00:00
|
|
|
"db_subnet_group_name": self._get_param("DBSubnetGroupName"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"iops": self._get_int_param("Iops"),
|
|
|
|
# OptionGroupName
|
2019-10-31 15:44:26 +00:00
|
|
|
"port": self._get_param("Port"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"publicly_accessible": self._get_param("PubliclyAccessible"),
|
2019-10-31 15:44:26 +00:00
|
|
|
"source_db_identifier": self._get_param("SourceDBInstanceIdentifier"),
|
2015-01-10 18:50:37 +00:00
|
|
|
"storage_type": self._get_param("StorageType"),
|
2015-01-09 03:18:06 +00:00
|
|
|
}
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
def _get_option_group_kwargs(self):
|
|
|
|
return {
|
|
|
|
"major_engine_version": self._get_param("MajorEngineVersion"),
|
|
|
|
"description": self._get_param("OptionGroupDescription"),
|
|
|
|
"engine_name": self._get_param("EngineName"),
|
|
|
|
"name": self._get_param("OptionGroupName"),
|
|
|
|
}
|
|
|
|
|
|
|
|
def _get_db_parameter_group_kwargs(self):
|
|
|
|
return {
|
|
|
|
"description": self._get_param("Description"),
|
|
|
|
"family": self._get_param("DBParameterGroupFamily"),
|
|
|
|
"name": self._get_param("DBParameterGroupName"),
|
|
|
|
"tags": self.unpack_complex_list_params("Tags.Tag", ("Key", "Value")),
|
|
|
|
}
|
|
|
|
|
|
|
|
def _get_db_cluster_kwargs(self):
|
|
|
|
return {
|
|
|
|
"availability_zones": self._get_multi_param(
|
|
|
|
"AvailabilityZones.AvailabilityZone"
|
|
|
|
),
|
2022-05-09 08:40:16 +00:00
|
|
|
"enable_cloudwatch_logs_exports": self._get_params().get(
|
|
|
|
"EnableCloudwatchLogsExports"
|
|
|
|
),
|
2022-03-09 11:05:18 +00:00
|
|
|
"db_name": self._get_param("DatabaseName"),
|
|
|
|
"db_cluster_identifier": self._get_param("DBClusterIdentifier"),
|
|
|
|
"deletion_protection": self._get_bool_param("DeletionProtection"),
|
|
|
|
"engine": self._get_param("Engine"),
|
|
|
|
"engine_version": self._get_param("EngineVersion"),
|
|
|
|
"engine_mode": self._get_param("EngineMode"),
|
|
|
|
"allocated_storage": self._get_param("AllocatedStorage"),
|
|
|
|
"iops": self._get_param("Iops"),
|
|
|
|
"storage_type": self._get_param("StorageType"),
|
|
|
|
"master_username": self._get_param("MasterUsername"),
|
|
|
|
"master_user_password": self._get_param("MasterUserPassword"),
|
|
|
|
"port": self._get_param("Port"),
|
|
|
|
"parameter_group": self._get_param("DBClusterParameterGroup"),
|
|
|
|
"region": self.region,
|
|
|
|
"db_cluster_instance_class": self._get_param("DBClusterInstanceClass"),
|
2022-09-19 17:14:27 +00:00
|
|
|
"enable_http_endpoint": self._get_param("EnableHttpEndpoint"),
|
2022-03-09 11:05:18 +00:00
|
|
|
"copy_tags_to_snapshot": self._get_param("CopyTagsToSnapshot"),
|
|
|
|
"tags": self.unpack_complex_list_params("Tags.Tag", ("Key", "Value")),
|
|
|
|
}
|
|
|
|
|
|
|
|
def _get_export_task_kwargs(self):
|
|
|
|
return {
|
|
|
|
"export_task_identifier": self._get_param("ExportTaskIdentifier"),
|
|
|
|
"source_arn": self._get_param("SourceArn"),
|
|
|
|
"s3_bucket_name": self._get_param("S3BucketName"),
|
|
|
|
"iam_role_arn": self._get_param("IamRoleArn"),
|
|
|
|
"kms_key_id": self._get_param("KmsKeyId"),
|
|
|
|
"s3_prefix": self._get_param("S3Prefix"),
|
|
|
|
"export_only": self.unpack_list_params("ExportOnly.member"),
|
|
|
|
}
|
|
|
|
|
|
|
|
def _get_event_subscription_kwargs(self):
|
|
|
|
return {
|
|
|
|
"subscription_name": self._get_param("SubscriptionName"),
|
|
|
|
"sns_topic_arn": self._get_param("SnsTopicArn"),
|
|
|
|
"source_type": self._get_param("SourceType"),
|
|
|
|
"event_categories": self.unpack_list_params(
|
|
|
|
"EventCategories.EventCategory"
|
|
|
|
),
|
|
|
|
"source_ids": self.unpack_list_params("SourceIds.SourceId"),
|
|
|
|
"enabled": self._get_param("Enabled"),
|
|
|
|
"tags": self.unpack_complex_list_params("Tags.Tag", ("Key", "Value")),
|
|
|
|
}
|
|
|
|
|
2017-01-12 02:02:51 +00:00
|
|
|
def unpack_complex_list_params(self, label, names):
|
|
|
|
unpacked_list = list()
|
|
|
|
count = 1
|
2019-10-31 15:44:26 +00:00
|
|
|
while self._get_param("{0}.{1}.{2}".format(label, count, names[0])):
|
2017-01-12 02:02:51 +00:00
|
|
|
param = dict()
|
|
|
|
for i in range(len(names)):
|
2017-02-24 02:37:43 +00:00
|
|
|
param[names[i]] = self._get_param(
|
2019-10-31 15:44:26 +00:00
|
|
|
"{0}.{1}.{2}".format(label, count, names[i])
|
|
|
|
)
|
2017-01-12 02:02:51 +00:00
|
|
|
unpacked_list.append(param)
|
|
|
|
count += 1
|
|
|
|
return unpacked_list
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
def unpack_list_params(self, label):
|
|
|
|
unpacked_list = list()
|
|
|
|
count = 1
|
|
|
|
while self._get_param("{0}.{1}".format(label, count)):
|
|
|
|
unpacked_list.append(self._get_param("{0}.{1}".format(label, count)))
|
|
|
|
count += 1
|
|
|
|
return unpacked_list
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def create_db_instance(self):
|
2015-01-09 04:44:05 +00:00
|
|
|
db_kwargs = self._get_db_kwargs()
|
2022-03-31 13:12:49 +00:00
|
|
|
database = self.backend.create_db_instance(db_kwargs)
|
2015-01-09 03:18:06 +00:00
|
|
|
template = self.response_template(CREATE_DATABASE_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def create_db_instance_read_replica(self):
|
2015-01-10 18:50:37 +00:00
|
|
|
db_kwargs = self._get_db_replica_kwargs()
|
|
|
|
|
2022-09-28 22:07:29 +00:00
|
|
|
database = self.backend.create_db_instance_read_replica(db_kwargs)
|
2015-01-10 18:50:37 +00:00
|
|
|
template = self.response_template(CREATE_DATABASE_REPLICA_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def describe_db_instances(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
2022-03-24 21:58:13 +00:00
|
|
|
filters = self._get_multi_param("Filters.Filter.")
|
|
|
|
filters = {f["Name"]: f["Values"] for f in filters}
|
2022-03-09 11:05:18 +00:00
|
|
|
all_instances = list(
|
2022-05-09 08:40:16 +00:00
|
|
|
self.backend.describe_db_instances(db_instance_identifier, filters=filters)
|
2022-03-09 11:05:18 +00:00
|
|
|
)
|
2019-10-31 15:44:26 +00:00
|
|
|
marker = self._get_param("Marker")
|
2017-05-11 01:58:42 +00:00
|
|
|
all_ids = [instance.db_instance_identifier for instance in all_instances]
|
|
|
|
if marker:
|
|
|
|
start = all_ids.index(marker) + 1
|
|
|
|
else:
|
|
|
|
start = 0
|
2019-10-31 15:44:26 +00:00
|
|
|
page_size = self._get_int_param(
|
|
|
|
"MaxRecords", 50
|
|
|
|
) # the default is 100, but using 50 to make testing easier
|
|
|
|
instances_resp = all_instances[start : start + page_size]
|
2017-05-11 01:58:42 +00:00
|
|
|
next_marker = None
|
|
|
|
if len(all_instances) > start + page_size:
|
|
|
|
next_marker = instances_resp[-1].db_instance_identifier
|
|
|
|
|
2015-01-09 03:18:06 +00:00
|
|
|
template = self.response_template(DESCRIBE_DATABASES_TEMPLATE)
|
2017-05-11 01:58:42 +00:00
|
|
|
return template.render(databases=instances_resp, marker=next_marker)
|
2015-01-09 03:18:06 +00:00
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def modify_db_instance(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
2015-01-09 04:44:05 +00:00
|
|
|
db_kwargs = self._get_db_kwargs()
|
2022-04-16 20:44:18 +00:00
|
|
|
# NOTE modify_db_instance does not support tags
|
|
|
|
del db_kwargs["tags"]
|
2019-10-31 15:44:26 +00:00
|
|
|
new_db_instance_identifier = self._get_param("NewDBInstanceIdentifier")
|
2017-11-30 11:41:25 +00:00
|
|
|
if new_db_instance_identifier:
|
2019-10-31 15:44:26 +00:00
|
|
|
db_kwargs["new_db_instance_identifier"] = new_db_instance_identifier
|
2022-03-31 13:12:49 +00:00
|
|
|
database = self.backend.modify_db_instance(db_instance_identifier, db_kwargs)
|
2015-01-09 04:44:05 +00:00
|
|
|
template = self.response_template(MODIFY_DATABASE_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def delete_db_instance(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
2022-03-09 11:05:18 +00:00
|
|
|
db_snapshot_name = self._get_param("FinalDBSnapshotIdentifier")
|
2022-03-31 13:12:49 +00:00
|
|
|
database = self.backend.delete_db_instance(
|
2022-03-09 11:05:18 +00:00
|
|
|
db_instance_identifier, db_snapshot_name
|
|
|
|
)
|
2015-01-09 03:18:06 +00:00
|
|
|
template = self.response_template(DELETE_DATABASE_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
def reboot_db_instance(self):
|
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
|
|
|
database = self.backend.reboot_db_instance(db_instance_identifier)
|
|
|
|
template = self.response_template(REBOOT_DATABASE_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
|
|
|
def create_db_snapshot(self):
|
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
|
|
|
db_snapshot_identifier = self._get_param("DBSnapshotIdentifier")
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
2022-03-31 13:12:49 +00:00
|
|
|
snapshot = self.backend.create_db_snapshot(
|
2022-03-09 11:05:18 +00:00
|
|
|
db_instance_identifier, db_snapshot_identifier, tags
|
|
|
|
)
|
|
|
|
template = self.response_template(CREATE_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(snapshot=snapshot)
|
|
|
|
|
|
|
|
def copy_db_snapshot(self):
|
|
|
|
source_snapshot_identifier = self._get_param("SourceDBSnapshotIdentifier")
|
|
|
|
target_snapshot_identifier = self._get_param("TargetDBSnapshotIdentifier")
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
|
|
|
snapshot = self.backend.copy_database_snapshot(
|
2022-03-10 14:39:59 +00:00
|
|
|
source_snapshot_identifier, target_snapshot_identifier, tags
|
2022-03-09 11:05:18 +00:00
|
|
|
)
|
|
|
|
template = self.response_template(COPY_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(snapshot=snapshot)
|
|
|
|
|
|
|
|
def describe_db_snapshots(self):
|
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
|
|
|
db_snapshot_identifier = self._get_param("DBSnapshotIdentifier")
|
2022-03-24 21:58:13 +00:00
|
|
|
filters = self._get_multi_param("Filters.Filter.")
|
|
|
|
filters = {f["Name"]: f["Values"] for f in filters}
|
2022-03-09 11:05:18 +00:00
|
|
|
snapshots = self.backend.describe_database_snapshots(
|
|
|
|
db_instance_identifier, db_snapshot_identifier, filters
|
|
|
|
)
|
|
|
|
template = self.response_template(DESCRIBE_SNAPSHOTS_TEMPLATE)
|
|
|
|
return template.render(snapshots=snapshots)
|
|
|
|
|
|
|
|
def delete_db_snapshot(self):
|
|
|
|
db_snapshot_identifier = self._get_param("DBSnapshotIdentifier")
|
2022-03-31 13:12:49 +00:00
|
|
|
snapshot = self.backend.delete_db_snapshot(db_snapshot_identifier)
|
2022-03-09 11:05:18 +00:00
|
|
|
template = self.response_template(DELETE_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(snapshot=snapshot)
|
|
|
|
|
|
|
|
def restore_db_instance_from_db_snapshot(self):
|
|
|
|
db_snapshot_identifier = self._get_param("DBSnapshotIdentifier")
|
|
|
|
db_kwargs = self._get_db_kwargs()
|
|
|
|
new_instance = self.backend.restore_db_instance_from_db_snapshot(
|
|
|
|
db_snapshot_identifier, db_kwargs
|
|
|
|
)
|
|
|
|
template = self.response_template(RESTORE_INSTANCE_FROM_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(database=new_instance)
|
|
|
|
|
|
|
|
def list_tags_for_resource(self):
|
|
|
|
arn = self._get_param("ResourceName")
|
|
|
|
template = self.response_template(LIST_TAGS_FOR_RESOURCE_TEMPLATE)
|
|
|
|
tags = self.backend.list_tags_for_resource(arn)
|
|
|
|
return template.render(tags=tags)
|
|
|
|
|
|
|
|
def add_tags_to_resource(self):
|
|
|
|
arn = self._get_param("ResourceName")
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
|
|
|
tags = self.backend.add_tags_to_resource(arn, tags)
|
|
|
|
template = self.response_template(ADD_TAGS_TO_RESOURCE_TEMPLATE)
|
|
|
|
return template.render(tags=tags)
|
|
|
|
|
|
|
|
def remove_tags_from_resource(self):
|
|
|
|
arn = self._get_param("ResourceName")
|
|
|
|
tag_keys = self.unpack_list_params("TagKeys.member")
|
|
|
|
self.backend.remove_tags_from_resource(arn, tag_keys)
|
|
|
|
template = self.response_template(REMOVE_TAGS_FROM_RESOURCE_TEMPLATE)
|
|
|
|
return template.render()
|
|
|
|
|
|
|
|
def stop_db_instance(self):
|
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
|
|
|
db_snapshot_identifier = self._get_param("DBSnapshotIdentifier")
|
2022-03-31 13:12:49 +00:00
|
|
|
database = self.backend.stop_db_instance(
|
2022-03-09 11:05:18 +00:00
|
|
|
db_instance_identifier, db_snapshot_identifier
|
|
|
|
)
|
|
|
|
template = self.response_template(STOP_DATABASE_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
|
|
|
def start_db_instance(self):
|
|
|
|
db_instance_identifier = self._get_param("DBInstanceIdentifier")
|
2022-03-31 13:12:49 +00:00
|
|
|
database = self.backend.start_db_instance(db_instance_identifier)
|
2022-03-09 11:05:18 +00:00
|
|
|
template = self.response_template(START_DATABASE_TEMPLATE)
|
|
|
|
return template.render(database=database)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def create_db_security_group(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
group_name = self._get_param("DBSecurityGroupName")
|
|
|
|
description = self._get_param("DBSecurityGroupDescription")
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
2022-03-31 13:12:49 +00:00
|
|
|
security_group = self.backend.create_db_security_group(
|
2019-10-31 15:44:26 +00:00
|
|
|
group_name, description, tags
|
|
|
|
)
|
2015-01-09 04:44:05 +00:00
|
|
|
template = self.response_template(CREATE_SECURITY_GROUP_TEMPLATE)
|
|
|
|
return template.render(security_group=security_group)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def describe_db_security_groups(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
security_group_name = self._get_param("DBSecurityGroupName")
|
|
|
|
security_groups = self.backend.describe_security_groups(security_group_name)
|
2015-01-09 04:44:05 +00:00
|
|
|
template = self.response_template(DESCRIBE_SECURITY_GROUPS_TEMPLATE)
|
|
|
|
return template.render(security_groups=security_groups)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def delete_db_security_group(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
security_group_name = self._get_param("DBSecurityGroupName")
|
|
|
|
security_group = self.backend.delete_security_group(security_group_name)
|
2015-01-09 04:44:05 +00:00
|
|
|
template = self.response_template(DELETE_SECURITY_GROUP_TEMPLATE)
|
|
|
|
return template.render(security_group=security_group)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def authorize_db_security_group_ingress(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
security_group_name = self._get_param("DBSecurityGroupName")
|
|
|
|
cidr_ip = self._get_param("CIDRIP")
|
2017-02-24 02:37:43 +00:00
|
|
|
security_group = self.backend.authorize_security_group(
|
2019-10-31 15:44:26 +00:00
|
|
|
security_group_name, cidr_ip
|
|
|
|
)
|
2015-01-09 04:44:05 +00:00
|
|
|
template = self.response_template(AUTHORIZE_SECURITY_GROUP_TEMPLATE)
|
|
|
|
return template.render(security_group=security_group)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def create_db_subnet_group(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
subnet_name = self._get_param("DBSubnetGroupName")
|
|
|
|
description = self._get_param("DBSubnetGroupDescription")
|
2022-03-09 11:05:18 +00:00
|
|
|
subnet_ids = self._get_multi_param("SubnetIds.SubnetIdentifier")
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
2019-10-31 15:44:26 +00:00
|
|
|
subnets = [
|
2022-08-13 09:49:43 +00:00
|
|
|
ec2_backends[self.current_account][self.region].get_subnet(subnet_id)
|
|
|
|
for subnet_id in subnet_ids
|
2019-10-31 15:44:26 +00:00
|
|
|
]
|
2017-02-24 02:37:43 +00:00
|
|
|
subnet_group = self.backend.create_subnet_group(
|
2019-10-31 15:44:26 +00:00
|
|
|
subnet_name, description, subnets, tags
|
|
|
|
)
|
2015-01-09 05:17:20 +00:00
|
|
|
template = self.response_template(CREATE_SUBNET_GROUP_TEMPLATE)
|
|
|
|
return template.render(subnet_group=subnet_group)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def describe_db_subnet_groups(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
subnet_name = self._get_param("DBSubnetGroupName")
|
2015-01-09 05:17:20 +00:00
|
|
|
subnet_groups = self.backend.describe_subnet_groups(subnet_name)
|
|
|
|
template = self.response_template(DESCRIBE_SUBNET_GROUPS_TEMPLATE)
|
|
|
|
return template.render(subnet_groups=subnet_groups)
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
def modify_db_subnet_group(self):
|
|
|
|
subnet_name = self._get_param("DBSubnetGroupName")
|
|
|
|
description = self._get_param("DBSubnetGroupDescription")
|
|
|
|
subnet_ids = self._get_multi_param("SubnetIds.SubnetIdentifier")
|
|
|
|
subnets = [
|
2022-08-13 09:49:43 +00:00
|
|
|
ec2_backends[self.current_account][self.region].get_subnet(subnet_id)
|
|
|
|
for subnet_id in subnet_ids
|
2022-03-09 11:05:18 +00:00
|
|
|
]
|
|
|
|
subnet_group = self.backend.modify_db_subnet_group(
|
|
|
|
subnet_name, description, subnets
|
|
|
|
)
|
|
|
|
template = self.response_template(MODIFY_SUBNET_GROUPS_TEMPLATE)
|
|
|
|
return template.render(subnet_group=subnet_group)
|
|
|
|
|
2017-03-16 03:39:36 +00:00
|
|
|
def delete_db_subnet_group(self):
|
2019-10-31 15:44:26 +00:00
|
|
|
subnet_name = self._get_param("DBSubnetGroupName")
|
2015-01-09 05:17:20 +00:00
|
|
|
subnet_group = self.backend.delete_subnet_group(subnet_name)
|
|
|
|
template = self.response_template(DELETE_SUBNET_GROUP_TEMPLATE)
|
|
|
|
return template.render(subnet_group=subnet_group)
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
def create_option_group(self):
|
|
|
|
kwargs = self._get_option_group_kwargs()
|
|
|
|
option_group = self.backend.create_option_group(kwargs)
|
|
|
|
template = self.response_template(CREATE_OPTION_GROUP_TEMPLATE)
|
|
|
|
return template.render(option_group=option_group)
|
|
|
|
|
|
|
|
def delete_option_group(self):
|
|
|
|
kwargs = self._get_option_group_kwargs()
|
|
|
|
option_group = self.backend.delete_option_group(kwargs["name"])
|
|
|
|
template = self.response_template(DELETE_OPTION_GROUP_TEMPLATE)
|
|
|
|
return template.render(option_group=option_group)
|
|
|
|
|
|
|
|
def describe_option_groups(self):
|
|
|
|
kwargs = self._get_option_group_kwargs()
|
|
|
|
kwargs["max_records"] = self._get_int_param("MaxRecords")
|
|
|
|
kwargs["marker"] = self._get_param("Marker")
|
|
|
|
option_groups = self.backend.describe_option_groups(kwargs)
|
|
|
|
template = self.response_template(DESCRIBE_OPTION_GROUP_TEMPLATE)
|
|
|
|
return template.render(option_groups=option_groups)
|
|
|
|
|
|
|
|
def describe_option_group_options(self):
|
|
|
|
engine_name = self._get_param("EngineName")
|
|
|
|
major_engine_version = self._get_param("MajorEngineVersion")
|
|
|
|
option_group_options = self.backend.describe_option_group_options(
|
|
|
|
engine_name, major_engine_version
|
|
|
|
)
|
|
|
|
return option_group_options
|
|
|
|
|
|
|
|
def modify_option_group(self):
|
|
|
|
option_group_name = self._get_param("OptionGroupName")
|
|
|
|
count = 1
|
|
|
|
options_to_include = []
|
|
|
|
while self._get_param("OptionsToInclude.member.{0}.OptionName".format(count)):
|
|
|
|
options_to_include.append(
|
|
|
|
{
|
|
|
|
"Port": self._get_param(
|
|
|
|
"OptionsToInclude.member.{0}.Port".format(count)
|
|
|
|
),
|
|
|
|
"OptionName": self._get_param(
|
|
|
|
"OptionsToInclude.member.{0}.OptionName".format(count)
|
|
|
|
),
|
|
|
|
"DBSecurityGroupMemberships": self._get_param(
|
|
|
|
"OptionsToInclude.member.{0}.DBSecurityGroupMemberships".format(
|
|
|
|
count
|
|
|
|
)
|
|
|
|
),
|
|
|
|
"OptionSettings": self._get_param(
|
|
|
|
"OptionsToInclude.member.{0}.OptionSettings".format(count)
|
|
|
|
),
|
|
|
|
"VpcSecurityGroupMemberships": self._get_param(
|
|
|
|
"OptionsToInclude.member.{0}.VpcSecurityGroupMemberships".format(
|
|
|
|
count
|
|
|
|
)
|
|
|
|
),
|
|
|
|
}
|
|
|
|
)
|
|
|
|
count += 1
|
|
|
|
|
|
|
|
count = 1
|
|
|
|
options_to_remove = []
|
|
|
|
while self._get_param("OptionsToRemove.member.{0}".format(count)):
|
|
|
|
options_to_remove.append(
|
|
|
|
self._get_param("OptionsToRemove.member.{0}".format(count))
|
|
|
|
)
|
|
|
|
count += 1
|
|
|
|
option_group = self.backend.modify_option_group(
|
2022-03-11 21:28:45 +00:00
|
|
|
option_group_name, options_to_include, options_to_remove
|
2022-03-09 11:05:18 +00:00
|
|
|
)
|
|
|
|
template = self.response_template(MODIFY_OPTION_GROUP_TEMPLATE)
|
|
|
|
return template.render(option_group=option_group)
|
|
|
|
|
|
|
|
def create_db_parameter_group(self):
|
|
|
|
kwargs = self._get_db_parameter_group_kwargs()
|
|
|
|
db_parameter_group = self.backend.create_db_parameter_group(kwargs)
|
|
|
|
template = self.response_template(CREATE_DB_PARAMETER_GROUP_TEMPLATE)
|
|
|
|
return template.render(db_parameter_group=db_parameter_group)
|
|
|
|
|
|
|
|
def describe_db_parameter_groups(self):
|
|
|
|
kwargs = self._get_db_parameter_group_kwargs()
|
|
|
|
kwargs["max_records"] = self._get_int_param("MaxRecords")
|
|
|
|
kwargs["marker"] = self._get_param("Marker")
|
|
|
|
db_parameter_groups = self.backend.describe_db_parameter_groups(kwargs)
|
|
|
|
template = self.response_template(DESCRIBE_DB_PARAMETER_GROUPS_TEMPLATE)
|
|
|
|
return template.render(db_parameter_groups=db_parameter_groups)
|
|
|
|
|
|
|
|
def modify_db_parameter_group(self):
|
|
|
|
db_parameter_group_name = self._get_param("DBParameterGroupName")
|
|
|
|
db_parameter_group_parameters = self._get_db_parameter_group_parameters()
|
|
|
|
db_parameter_group = self.backend.modify_db_parameter_group(
|
|
|
|
db_parameter_group_name, db_parameter_group_parameters
|
|
|
|
)
|
|
|
|
template = self.response_template(MODIFY_DB_PARAMETER_GROUP_TEMPLATE)
|
|
|
|
return template.render(db_parameter_group=db_parameter_group)
|
|
|
|
|
|
|
|
def _get_db_parameter_group_parameters(self):
|
|
|
|
parameter_group_parameters = defaultdict(dict)
|
|
|
|
for param_name, value in self.querystring.items():
|
|
|
|
if not param_name.startswith("Parameters.Parameter"):
|
|
|
|
continue
|
|
|
|
|
|
|
|
split_param_name = param_name.split(".")
|
|
|
|
param_id = split_param_name[2]
|
|
|
|
param_setting = split_param_name[3]
|
|
|
|
|
|
|
|
parameter_group_parameters[param_id][param_setting] = value[0]
|
|
|
|
|
|
|
|
return parameter_group_parameters.values()
|
|
|
|
|
|
|
|
def describe_db_parameters(self):
|
|
|
|
db_parameter_group_name = self._get_param("DBParameterGroupName")
|
|
|
|
db_parameter_groups = self.backend.describe_db_parameter_groups(
|
|
|
|
{"name": db_parameter_group_name}
|
|
|
|
)
|
|
|
|
if not db_parameter_groups:
|
|
|
|
raise DBParameterGroupNotFoundError(db_parameter_group_name)
|
|
|
|
|
|
|
|
template = self.response_template(DESCRIBE_DB_PARAMETERS_TEMPLATE)
|
|
|
|
return template.render(db_parameter_group=db_parameter_groups[0])
|
|
|
|
|
|
|
|
def delete_db_parameter_group(self):
|
|
|
|
kwargs = self._get_db_parameter_group_kwargs()
|
|
|
|
db_parameter_group = self.backend.delete_db_parameter_group(kwargs["name"])
|
|
|
|
template = self.response_template(DELETE_DB_PARAMETER_GROUP_TEMPLATE)
|
|
|
|
return template.render(db_parameter_group=db_parameter_group)
|
|
|
|
|
|
|
|
def create_db_cluster(self):
|
|
|
|
kwargs = self._get_db_cluster_kwargs()
|
|
|
|
cluster = self.backend.create_db_cluster(kwargs)
|
|
|
|
template = self.response_template(CREATE_DB_CLUSTER_TEMPLATE)
|
|
|
|
return template.render(cluster=cluster)
|
|
|
|
|
|
|
|
def describe_db_clusters(self):
|
|
|
|
_id = self._get_param("DBClusterIdentifier")
|
|
|
|
clusters = self.backend.describe_db_clusters(cluster_identifier=_id)
|
|
|
|
template = self.response_template(DESCRIBE_CLUSTERS_TEMPLATE)
|
|
|
|
return template.render(clusters=clusters)
|
|
|
|
|
|
|
|
def delete_db_cluster(self):
|
|
|
|
_id = self._get_param("DBClusterIdentifier")
|
2022-04-14 14:58:41 +00:00
|
|
|
snapshot_name = self._get_param("FinalDBSnapshotIdentifier")
|
|
|
|
cluster = self.backend.delete_db_cluster(
|
|
|
|
cluster_identifier=_id, snapshot_name=snapshot_name
|
|
|
|
)
|
2022-03-09 11:05:18 +00:00
|
|
|
template = self.response_template(DELETE_CLUSTER_TEMPLATE)
|
|
|
|
return template.render(cluster=cluster)
|
|
|
|
|
|
|
|
def start_db_cluster(self):
|
|
|
|
_id = self._get_param("DBClusterIdentifier")
|
|
|
|
cluster = self.backend.start_db_cluster(cluster_identifier=_id)
|
|
|
|
template = self.response_template(START_CLUSTER_TEMPLATE)
|
|
|
|
return template.render(cluster=cluster)
|
|
|
|
|
|
|
|
def stop_db_cluster(self):
|
|
|
|
_id = self._get_param("DBClusterIdentifier")
|
|
|
|
cluster = self.backend.stop_db_cluster(cluster_identifier=_id)
|
|
|
|
template = self.response_template(STOP_CLUSTER_TEMPLATE)
|
|
|
|
return template.render(cluster=cluster)
|
|
|
|
|
|
|
|
def create_db_cluster_snapshot(self):
|
|
|
|
db_cluster_identifier = self._get_param("DBClusterIdentifier")
|
|
|
|
db_snapshot_identifier = self._get_param("DBClusterSnapshotIdentifier")
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
|
|
|
snapshot = self.backend.create_db_cluster_snapshot(
|
|
|
|
db_cluster_identifier, db_snapshot_identifier, tags
|
|
|
|
)
|
|
|
|
template = self.response_template(CREATE_CLUSTER_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(snapshot=snapshot)
|
|
|
|
|
|
|
|
def copy_db_cluster_snapshot(self):
|
|
|
|
source_snapshot_identifier = self._get_param(
|
|
|
|
"SourceDBClusterSnapshotIdentifier"
|
|
|
|
)
|
|
|
|
target_snapshot_identifier = self._get_param(
|
|
|
|
"TargetDBClusterSnapshotIdentifier"
|
|
|
|
)
|
|
|
|
tags = self.unpack_complex_list_params("Tags.Tag", ("Key", "Value"))
|
|
|
|
snapshot = self.backend.copy_cluster_snapshot(
|
2022-03-10 14:39:59 +00:00
|
|
|
source_snapshot_identifier, target_snapshot_identifier, tags
|
2022-03-09 11:05:18 +00:00
|
|
|
)
|
|
|
|
template = self.response_template(COPY_CLUSTER_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(snapshot=snapshot)
|
|
|
|
|
|
|
|
def describe_db_cluster_snapshots(self):
|
|
|
|
db_cluster_identifier = self._get_param("DBClusterIdentifier")
|
|
|
|
db_snapshot_identifier = self._get_param("DBClusterSnapshotIdentifier")
|
2022-03-24 21:58:13 +00:00
|
|
|
filters = self._get_multi_param("Filters.Filter.")
|
|
|
|
filters = {f["Name"]: f["Values"] for f in filters}
|
2022-03-09 11:05:18 +00:00
|
|
|
snapshots = self.backend.describe_db_cluster_snapshots(
|
|
|
|
db_cluster_identifier, db_snapshot_identifier, filters
|
|
|
|
)
|
|
|
|
template = self.response_template(DESCRIBE_CLUSTER_SNAPSHOTS_TEMPLATE)
|
|
|
|
return template.render(snapshots=snapshots)
|
|
|
|
|
|
|
|
def delete_db_cluster_snapshot(self):
|
|
|
|
db_snapshot_identifier = self._get_param("DBClusterSnapshotIdentifier")
|
|
|
|
snapshot = self.backend.delete_db_cluster_snapshot(db_snapshot_identifier)
|
|
|
|
template = self.response_template(DELETE_CLUSTER_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(snapshot=snapshot)
|
|
|
|
|
|
|
|
def restore_db_cluster_from_snapshot(self):
|
|
|
|
db_snapshot_identifier = self._get_param("SnapshotIdentifier")
|
|
|
|
db_kwargs = self._get_db_cluster_kwargs()
|
|
|
|
new_cluster = self.backend.restore_db_cluster_from_snapshot(
|
|
|
|
db_snapshot_identifier, db_kwargs
|
|
|
|
)
|
|
|
|
template = self.response_template(RESTORE_CLUSTER_FROM_SNAPSHOT_TEMPLATE)
|
|
|
|
return template.render(cluster=new_cluster)
|
|
|
|
|
|
|
|
def start_export_task(self):
|
|
|
|
kwargs = self._get_export_task_kwargs()
|
|
|
|
export_task = self.backend.start_export_task(kwargs)
|
|
|
|
template = self.response_template(START_EXPORT_TASK_TEMPLATE)
|
|
|
|
return template.render(task=export_task)
|
|
|
|
|
|
|
|
def cancel_export_task(self):
|
|
|
|
export_task_identifier = self._get_param("ExportTaskIdentifier")
|
|
|
|
export_task = self.backend.cancel_export_task(export_task_identifier)
|
|
|
|
template = self.response_template(CANCEL_EXPORT_TASK_TEMPLATE)
|
|
|
|
return template.render(task=export_task)
|
|
|
|
|
|
|
|
def describe_export_tasks(self):
|
|
|
|
export_task_identifier = self._get_param("ExportTaskIdentifier")
|
2022-03-10 14:39:59 +00:00
|
|
|
tasks = self.backend.describe_export_tasks(export_task_identifier)
|
2022-03-09 11:05:18 +00:00
|
|
|
template = self.response_template(DESCRIBE_EXPORT_TASKS_TEMPLATE)
|
|
|
|
return template.render(tasks=tasks)
|
|
|
|
|
|
|
|
def create_event_subscription(self):
|
|
|
|
kwargs = self._get_event_subscription_kwargs()
|
|
|
|
subscription = self.backend.create_event_subscription(kwargs)
|
|
|
|
template = self.response_template(CREATE_EVENT_SUBSCRIPTION_TEMPLATE)
|
|
|
|
return template.render(subscription=subscription)
|
|
|
|
|
|
|
|
def delete_event_subscription(self):
|
|
|
|
subscription_name = self._get_param("SubscriptionName")
|
|
|
|
subscription = self.backend.delete_event_subscription(subscription_name)
|
|
|
|
template = self.response_template(DELETE_EVENT_SUBSCRIPTION_TEMPLATE)
|
|
|
|
return template.render(subscription=subscription)
|
|
|
|
|
|
|
|
def describe_event_subscriptions(self):
|
|
|
|
subscription_name = self._get_param("SubscriptionName")
|
|
|
|
subscriptions = self.backend.describe_event_subscriptions(subscription_name)
|
|
|
|
template = self.response_template(DESCRIBE_EVENT_SUBSCRIPTIONS_TEMPLATE)
|
|
|
|
return template.render(subscriptions=subscriptions)
|
|
|
|
|
2015-01-09 03:18:06 +00:00
|
|
|
|
|
|
|
CREATE_DATABASE_TEMPLATE = """<CreateDBInstanceResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBInstanceResult>
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ database.to_xml() }}
|
2015-01-09 03:18:06 +00:00
|
|
|
</CreateDBInstanceResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBInstanceResponse>"""
|
|
|
|
|
2015-01-10 18:50:37 +00:00
|
|
|
CREATE_DATABASE_REPLICA_TEMPLATE = """<CreateDBInstanceReadReplicaResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBInstanceReadReplicaResult>
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ database.to_xml() }}
|
2015-01-10 18:50:37 +00:00
|
|
|
</CreateDBInstanceReadReplicaResult>
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>5e60c46d-a844-11e4-bb68-17f36418e58f</RequestId>
|
2015-01-10 18:50:37 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBInstanceReadReplicaResponse>"""
|
|
|
|
|
2015-01-09 03:18:06 +00:00
|
|
|
DESCRIBE_DATABASES_TEMPLATE = """<DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBInstancesResult>
|
|
|
|
<DBInstances>
|
2022-03-09 11:05:18 +00:00
|
|
|
{%- for database in databases -%}
|
|
|
|
{{ database.to_xml() }}
|
|
|
|
{%- endfor -%}
|
2015-01-09 03:18:06 +00:00
|
|
|
</DBInstances>
|
2017-05-11 01:58:42 +00:00
|
|
|
{% if marker %}
|
|
|
|
<Marker>{{ marker }}</Marker>
|
|
|
|
{% endif %}
|
2015-01-09 03:18:06 +00:00
|
|
|
</DescribeDBInstancesResult>
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
2015-01-09 03:18:06 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBInstancesResponse>"""
|
|
|
|
|
2015-01-09 04:44:05 +00:00
|
|
|
MODIFY_DATABASE_TEMPLATE = """<ModifyDBInstanceResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ModifyDBInstanceResult>
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ database.to_xml() }}
|
2015-01-09 04:44:05 +00:00
|
|
|
</ModifyDBInstanceResult>
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>bb58476c-a1a8-11e4-99cf-55e92d4bbada</RequestId>
|
2015-01-09 04:44:05 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</ModifyDBInstanceResponse>"""
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
REBOOT_DATABASE_TEMPLATE = """<RebootDBInstanceResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<RebootDBInstanceResult>
|
|
|
|
{{ database.to_xml() }}
|
|
|
|
</RebootDBInstanceResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>d55711cb-a1ab-11e4-99cf-55e92d4bbada</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</RebootDBInstanceResponse>"""
|
|
|
|
|
|
|
|
START_DATABASE_TEMPLATE = """<StartDBInstanceResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<StartDBInstanceResult>
|
|
|
|
{{ database.to_xml() }}
|
|
|
|
</StartDBInstanceResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab9</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</StartDBInstanceResponse>"""
|
|
|
|
|
|
|
|
STOP_DATABASE_TEMPLATE = """<StopDBInstanceResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<StopDBInstanceResult>
|
|
|
|
{{ database.to_xml() }}
|
|
|
|
</StopDBInstanceResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab8</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</StopDBInstanceResponse>"""
|
|
|
|
|
2015-01-09 03:18:06 +00:00
|
|
|
DELETE_DATABASE_TEMPLATE = """<DeleteDBInstanceResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DeleteDBInstanceResult>
|
|
|
|
{{ database.to_xml() }}
|
|
|
|
</DeleteDBInstanceResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>7369556f-b70d-11c3-faca-6ba18376ea1b</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBInstanceResponse>"""
|
2015-01-09 04:44:05 +00:00
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
DELETE_CLUSTER_TEMPLATE = """<DeleteDBClusterResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DeleteDBClusterResult>
|
|
|
|
{{ cluster.to_xml() }}
|
|
|
|
</DeleteDBClusterResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>7369556f-b70d-11c3-faca-6ba18376ea1b</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBClusterResponse>"""
|
|
|
|
|
|
|
|
RESTORE_INSTANCE_FROM_SNAPSHOT_TEMPLATE = """<RestoreDBInstanceFromDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<RestoreDBInstanceFromDBSnapshotResult>
|
|
|
|
{{ database.to_xml() }}
|
|
|
|
</RestoreDBInstanceFromDBSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</RestoreDBInstanceFromDBSnapshotResponse>"""
|
|
|
|
|
|
|
|
CREATE_SNAPSHOT_TEMPLATE = """<CreateDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBSnapshotResult>
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
</CreateDBSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
COPY_SNAPSHOT_TEMPLATE = """<CopyDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CopyDBSnapshotResult>
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
</CopyDBSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CopyDBSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
DESCRIBE_SNAPSHOTS_TEMPLATE = """<DescribeDBSnapshotsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBSnapshotsResult>
|
|
|
|
<DBSnapshots>
|
|
|
|
{%- for snapshot in snapshots -%}
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</DBSnapshots>
|
|
|
|
{% if marker %}
|
|
|
|
<Marker>{{ marker }}</Marker>
|
|
|
|
{% endif %}
|
|
|
|
</DescribeDBSnapshotsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBSnapshotsResponse>"""
|
|
|
|
|
|
|
|
DELETE_SNAPSHOT_TEMPLATE = """<DeleteDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DeleteDBSnapshotResult>
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
</DeleteDBSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
2015-01-09 04:44:05 +00:00
|
|
|
CREATE_SECURITY_GROUP_TEMPLATE = """<CreateDBSecurityGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBSecurityGroupResult>
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ security_group.to_xml() }}
|
2015-01-09 04:44:05 +00:00
|
|
|
</CreateDBSecurityGroupResult>
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>462165d0-a77a-11e4-a5fa-75b30c556f97</RequestId>
|
2015-01-09 04:44:05 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBSecurityGroupResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_SECURITY_GROUPS_TEMPLATE = """<DescribeDBSecurityGroupsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBSecurityGroupsResult>
|
|
|
|
<DBSecurityGroups>
|
|
|
|
{% for security_group in security_groups %}
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ security_group.to_xml() }}
|
2015-01-09 04:44:05 +00:00
|
|
|
{% endfor %}
|
2022-03-09 11:05:18 +00:00
|
|
|
</DBSecurityGroups>
|
2015-01-09 04:44:05 +00:00
|
|
|
</DescribeDBSecurityGroupsResult>
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>5df2014e-a779-11e4-bdb0-594def064d0c</RequestId>
|
2015-01-09 04:44:05 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBSecurityGroupsResponse>"""
|
|
|
|
|
|
|
|
DELETE_SECURITY_GROUP_TEMPLATE = """<DeleteDBSecurityGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>97e846bd-a77d-11e4-ac58-91351c0f3426</RequestId>
|
2015-01-09 04:44:05 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBSecurityGroupResponse>"""
|
|
|
|
|
|
|
|
AUTHORIZE_SECURITY_GROUP_TEMPLATE = """<AuthorizeDBSecurityGroupIngressResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<AuthorizeDBSecurityGroupIngressResult>
|
|
|
|
{{ security_group.to_xml() }}
|
|
|
|
</AuthorizeDBSecurityGroupIngressResult>
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>75d32fd5-a77e-11e4-8892-b10432f7a87d</RequestId>
|
2015-01-09 04:44:05 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</AuthorizeDBSecurityGroupIngressResponse>"""
|
2015-01-09 05:17:20 +00:00
|
|
|
|
|
|
|
CREATE_SUBNET_GROUP_TEMPLATE = """<CreateDBSubnetGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBSubnetGroupResult>
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ subnet_group.to_xml() }}
|
2015-01-09 05:17:20 +00:00
|
|
|
</CreateDBSubnetGroupResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>3a401b3f-bb9e-11d3-f4c6-37db295f7674</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBSubnetGroupResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_SUBNET_GROUPS_TEMPLATE = """<DescribeDBSubnetGroupsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBSubnetGroupsResult>
|
|
|
|
<DBSubnetGroups>
|
|
|
|
{% for subnet_group in subnet_groups %}
|
2022-03-09 11:05:18 +00:00
|
|
|
{{ subnet_group.to_xml() }}
|
2015-01-09 05:17:20 +00:00
|
|
|
{% endfor %}
|
|
|
|
</DBSubnetGroups>
|
|
|
|
</DescribeDBSubnetGroupsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>b783db3b-b98c-11d3-fbc7-5c0aad74da7c</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBSubnetGroupsResponse>"""
|
|
|
|
|
2022-03-09 11:05:18 +00:00
|
|
|
MODIFY_SUBNET_GROUPS_TEMPLATE = """<ModifyDBSubnetGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ModifyDBSubnetGroupResult>
|
|
|
|
{{ subnet_group.to_xml() }}
|
|
|
|
</ModifyDBSubnetGroupResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>b783db3b-b98c-11d3-fbc7-5c0aad74da7c</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</ModifyDBSubnetGroupResponse>"""
|
|
|
|
|
2015-01-09 05:17:20 +00:00
|
|
|
DELETE_SUBNET_GROUP_TEMPLATE = """<DeleteDBSubnetGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ResponseMetadata>
|
2022-03-09 11:05:18 +00:00
|
|
|
<RequestId>13785dd5-a7fc-11e4-bb9c-7f371d0859b0</RequestId>
|
2015-01-09 05:17:20 +00:00
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBSubnetGroupResponse>"""
|
2022-03-09 11:05:18 +00:00
|
|
|
|
|
|
|
CREATE_OPTION_GROUP_TEMPLATE = """<CreateOptionGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateOptionGroupResult>
|
|
|
|
{{ option_group.to_xml() }}
|
|
|
|
</CreateOptionGroupResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>1e38dad4-9f50-11e4-87ea-a31c60ed2e36</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateOptionGroupResponse>"""
|
|
|
|
|
|
|
|
DELETE_OPTION_GROUP_TEMPLATE = """<DeleteOptionGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>e2590367-9fa2-11e4-99cf-55e92d41c60e</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteOptionGroupResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_OPTION_GROUP_TEMPLATE = """<DescribeOptionGroupsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeOptionGroupsResult>
|
|
|
|
<OptionGroupsList>
|
|
|
|
{%- for option_group in option_groups -%}
|
|
|
|
{{ option_group.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</OptionGroupsList>
|
|
|
|
</DescribeOptionGroupsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>4caf445d-9fbc-11e4-87ea-a31c60ed2e36</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeOptionGroupsResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_OPTION_GROUP_OPTIONS_TEMPLATE = """<DescribeOptionGroupOptionsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeOptionGroupOptionsResult>
|
|
|
|
<OptionGroupOptions>
|
|
|
|
{%- for option_group_option in option_group_options -%}
|
|
|
|
{{ option_group_option.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</OptionGroupOptions>
|
|
|
|
</DescribeOptionGroupOptionsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>457f7bb8-9fbf-11e4-9084-5754f80d5144</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeOptionGroupOptionsResponse>"""
|
|
|
|
|
|
|
|
MODIFY_OPTION_GROUP_TEMPLATE = """<ModifyOptionGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ModifyOptionGroupResult>
|
|
|
|
{{ option_group.to_xml() }}
|
|
|
|
</ModifyOptionGroupResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>ce9284a5-a0de-11e4-b984-a11a53e1f328</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</ModifyOptionGroupResponse>"""
|
|
|
|
|
|
|
|
CREATE_DB_PARAMETER_GROUP_TEMPLATE = """<CreateDBParameterGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBParameterGroupResult>
|
|
|
|
{{ db_parameter_group.to_xml() }}
|
|
|
|
</CreateDBParameterGroupResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>7805c127-af22-11c3-96ac-6999cc5f7e72</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBParameterGroupResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_DB_PARAMETER_GROUPS_TEMPLATE = """<DescribeDBParameterGroupsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBParameterGroupsResult>
|
|
|
|
<DBParameterGroups>
|
|
|
|
{%- for db_parameter_group in db_parameter_groups -%}
|
|
|
|
{{ db_parameter_group.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</DBParameterGroups>
|
|
|
|
</DescribeDBParameterGroupsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>b75d527a-b98c-11d3-f272-7cd6cce12cc5</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBParameterGroupsResponse>"""
|
|
|
|
|
|
|
|
MODIFY_DB_PARAMETER_GROUP_TEMPLATE = """<ModifyDBParameterGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ModifyDBParameterGroupResult>
|
|
|
|
<DBParameterGroupName>{{ db_parameter_group.name }}</DBParameterGroupName>
|
|
|
|
</ModifyDBParameterGroupResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>12d7435e-bba0-11d3-fe11-33d33a9bb7e3</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</ModifyDBParameterGroupResponse>"""
|
|
|
|
|
|
|
|
DELETE_DB_PARAMETER_GROUP_TEMPLATE = """<DeleteDBParameterGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>cad6c267-ba25-11d3-fe11-33d33a9bb7e3</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBParameterGroupResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_DB_PARAMETERS_TEMPLATE = """<DescribeDBParametersResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBParametersResult>
|
|
|
|
<Parameters>
|
|
|
|
{%- for db_parameter_name, db_parameter in db_parameter_group.parameters.items() -%}
|
|
|
|
<Parameter>
|
|
|
|
{%- for parameter_name, parameter_value in db_parameter.items() -%}
|
|
|
|
<{{ parameter_name }}>{{ parameter_value }}</{{ parameter_name }}>
|
|
|
|
{%- endfor -%}
|
|
|
|
</Parameter>
|
|
|
|
{%- endfor -%}
|
|
|
|
</Parameters>
|
|
|
|
</DescribeDBParametersResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>8c40488f-b9ff-11d3-a15e-7ac49293f4fa</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBParametersResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
LIST_TAGS_FOR_RESOURCE_TEMPLATE = """<ListTagsForResourceResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<ListTagsForResourceResult>
|
|
|
|
<TagList>
|
|
|
|
{%- for tag in tags -%}
|
|
|
|
<Tag>
|
|
|
|
<Key>{{ tag['Key'] }}</Key>
|
|
|
|
<Value>{{ tag['Value'] }}</Value>
|
|
|
|
</Tag>
|
|
|
|
{%- endfor -%}
|
|
|
|
</TagList>
|
|
|
|
</ListTagsForResourceResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>8c21ba39-a598-11e4-b688-194eaf8658fa</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</ListTagsForResourceResponse>"""
|
|
|
|
|
|
|
|
ADD_TAGS_TO_RESOURCE_TEMPLATE = """<AddTagsToResourceResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>b194d9ca-a664-11e4-b688-194eaf8658fa</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</AddTagsToResourceResponse>"""
|
|
|
|
|
|
|
|
REMOVE_TAGS_FROM_RESOURCE_TEMPLATE = """<RemoveTagsFromResourceResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>b194d9ca-a664-11e4-b688-194eaf8658fa</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</RemoveTagsFromResourceResponse>"""
|
|
|
|
|
|
|
|
CREATE_DB_CLUSTER_TEMPLATE = """<CreateDBClusterResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBClusterResult>
|
|
|
|
{{ cluster.to_xml() }}
|
|
|
|
</CreateDBClusterResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBClusterResponse>"""
|
|
|
|
|
|
|
|
DESCRIBE_CLUSTERS_TEMPLATE = """<DescribeDBClustersResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBClustersResult>
|
|
|
|
<DBClusters>
|
|
|
|
{%- for cluster in clusters -%}
|
|
|
|
{{ cluster.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</DBClusters>
|
|
|
|
{% if marker %}
|
|
|
|
<Marker>{{ marker }}</Marker>
|
|
|
|
{% endif %}
|
|
|
|
</DescribeDBClustersResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBClustersResponse>"""
|
|
|
|
|
|
|
|
START_CLUSTER_TEMPLATE = """<StartDBClusterResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<StartDBClusterResult>
|
|
|
|
{{ cluster.to_xml() }}
|
|
|
|
</StartDBClusterResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab9</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</StartDBClusterResponse>"""
|
|
|
|
|
|
|
|
STOP_CLUSTER_TEMPLATE = """<StopDBClusterResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/">
|
|
|
|
<StopDBClusterResult>
|
|
|
|
{{ cluster.to_xml() }}
|
|
|
|
</StopDBClusterResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab8</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</StopDBClusterResponse>"""
|
|
|
|
|
|
|
|
RESTORE_CLUSTER_FROM_SNAPSHOT_TEMPLATE = """<RestoreDBClusterFromDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<RestoreDBClusterFromSnapshotResult>
|
|
|
|
{{ cluster.to_xml() }}
|
|
|
|
</RestoreDBClusterFromSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</RestoreDBClusterFromDBSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
CREATE_CLUSTER_SNAPSHOT_TEMPLATE = """<CreateDBClusterSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateDBClusterSnapshotResult>
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
</CreateDBClusterSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateDBClusterSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
COPY_CLUSTER_SNAPSHOT_TEMPLATE = """<CopyDBClusterSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CopyDBClusterSnapshotResult>
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
</CopyDBClusterSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CopyDBClusterSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
DESCRIBE_CLUSTER_SNAPSHOTS_TEMPLATE = """<DescribeDBClusterSnapshotsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeDBClusterSnapshotsResult>
|
|
|
|
<DBClusterSnapshots>
|
|
|
|
{%- for snapshot in snapshots -%}
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</DBClusterSnapshots>
|
|
|
|
{% if marker %}
|
|
|
|
<Marker>{{ marker }}</Marker>
|
|
|
|
{% endif %}
|
|
|
|
</DescribeDBClusterSnapshotsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeDBClusterSnapshotsResponse>"""
|
|
|
|
|
|
|
|
DELETE_CLUSTER_SNAPSHOT_TEMPLATE = """<DeleteDBClusterSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DeleteDBClusterSnapshotResult>
|
|
|
|
{{ snapshot.to_xml() }}
|
|
|
|
</DeleteDBClusterSnapshotResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteDBClusterSnapshotResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
START_EXPORT_TASK_TEMPLATE = """<StartExportTaskResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<StartExportTaskResult>
|
|
|
|
{{ task.to_xml() }}
|
|
|
|
</StartExportTaskResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</StartExportTaskResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
CANCEL_EXPORT_TASK_TEMPLATE = """<CancelExportTaskResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CancelExportTaskResult>
|
|
|
|
{{ task.to_xml() }}
|
|
|
|
</CancelExportTaskResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CancelExportTaskResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
DESCRIBE_EXPORT_TASKS_TEMPLATE = """<DescribeExportTasksResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeExportTasksResult>
|
|
|
|
<ExportTasks>
|
|
|
|
{%- for task in tasks -%}
|
|
|
|
<ExportTask>{{ task.to_xml() }}</ExportTask>
|
|
|
|
{%- endfor -%}
|
|
|
|
</ExportTasks>
|
|
|
|
{% if marker %}
|
|
|
|
<Marker>{{ marker }}</Marker>
|
|
|
|
{% endif %}
|
|
|
|
</DescribeExportTasksResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeExportTasksResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
CREATE_EVENT_SUBSCRIPTION_TEMPLATE = """<CreateEventSubscriptionResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<CreateEventSubscriptionResult>
|
|
|
|
{{ subscription.to_xml() }}
|
|
|
|
</CreateEventSubscriptionResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</CreateEventSubscriptionResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
DELETE_EVENT_SUBSCRIPTION_TEMPLATE = """<DeleteEventSubscriptionResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DeleteEventSubscriptionResult>
|
|
|
|
{{ subscription.to_xml() }}
|
|
|
|
</DeleteEventSubscriptionResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DeleteEventSubscriptionResponse>
|
|
|
|
"""
|
|
|
|
|
|
|
|
DESCRIBE_EVENT_SUBSCRIPTIONS_TEMPLATE = """<DescribeEventSubscriptionsResponse xmlns="http://rds.amazonaws.com/doc/2014-09-01/">
|
|
|
|
<DescribeEventSubscriptionsResult>
|
|
|
|
<EventSubscriptionsList>
|
|
|
|
{%- for subscription in subscriptions -%}
|
|
|
|
{{ subscription.to_xml() }}
|
|
|
|
{%- endfor -%}
|
|
|
|
</EventSubscriptionsList>
|
|
|
|
</DescribeEventSubscriptionsResult>
|
|
|
|
<ResponseMetadata>
|
|
|
|
<RequestId>523e3218-afc7-11c3-90f5-f90431260ab4</RequestId>
|
|
|
|
</ResponseMetadata>
|
|
|
|
</DescribeEventSubscriptionsResponse>
|
|
|
|
"""
|