syndicate/core/resources/processors_mapping.py (286 lines of code) (raw):
"""
Copyright 2018 EPAM Systems, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from syndicate.core.constants import \
API_GATEWAY_TYPE, WEB_SOCKET_API_GATEWAY_TYPE, CLOUD_WATCH_ALARM_TYPE, \
CLOUD_WATCH_RULE_TYPE, EVENT_BRIDGE_RULE_TYPE, DYNAMO_TABLE_TYPE, \
EBS_TYPE, EC2_INSTANCE_TYPE, IAM_POLICY, IAM_ROLE, KINESIS_STREAM_TYPE, \
LAMBDA_TYPE, S3_BUCKET_TYPE, SNS_PLATFORM_APPLICATION_TYPE, \
SNS_TOPIC_TYPE, SQS_QUEUE_TYPE, STATE_ACTIVITY_TYPE, STEP_FUNCTION_TYPE, \
LAMBDA_LAYER_TYPE, BATCH_COMPENV_TYPE, BATCH_JOBQUEUE_TYPE, \
BATCH_JOBDEF_TYPE, COGNITO_USER_POOL_TYPE, COGNITO_FEDERATED_POOL_TYPE, \
DOCUMENTDB_CLUSTER_TYPE, DOCUMENTDB_INSTANCE_TYPE, DAX_CLUSTER_TYPE, \
FIREHOSE_TYPE, EVENT_BRIDGE_SCHEDULE_TYPE, API_GATEWAY_OAS_V3_TYPE, \
SWAGGER_UI_TYPE, EC2_LAUNCH_TEMPLATE_TYPE, APPSYNC_TYPE
class ProcessorFacade:
def __init__(self, resources_provider) -> None:
self.resources_provider = resources_provider
def create_handlers(self):
return {
IAM_POLICY:
self.resources_provider.iam().create_policies,
IAM_ROLE:
self.resources_provider.iam().create_roles,
LAMBDA_TYPE:
self.resources_provider.lambda_resource().create_lambda,
LAMBDA_LAYER_TYPE:
self.resources_provider.lambda_resource().create_lambda_layer,
DYNAMO_TABLE_TYPE:
self.resources_provider.dynamodb().create_tables,
CLOUD_WATCH_RULE_TYPE:
self.resources_provider.cw().create_cloud_watch_rule,
EVENT_BRIDGE_RULE_TYPE:
self.resources_provider.cw().create_cloud_watch_rule,
S3_BUCKET_TYPE:
self.resources_provider.s3().create_s3_bucket,
API_GATEWAY_TYPE:
self.resources_provider.api_gw().create_api_gateway,
API_GATEWAY_OAS_V3_TYPE:
self.resources_provider.api_gw().create_api_gateway_openapi,
WEB_SOCKET_API_GATEWAY_TYPE:
self.resources_provider.api_gw().create_web_socket_api_gateway,
COGNITO_USER_POOL_TYPE:
self.resources_provider.cognito_user_pool()
.create_cognito_user_pool,
COGNITO_FEDERATED_POOL_TYPE:
self.resources_provider.cognito_identity()
.create_cognito_identity_pool,
SNS_TOPIC_TYPE:
self.resources_provider.sns().create_sns_topic,
SNS_PLATFORM_APPLICATION_TYPE:
self.resources_provider.sns().create_sns_application,
SQS_QUEUE_TYPE:
self.resources_provider.sqs().create_sqs_queue,
CLOUD_WATCH_ALARM_TYPE:
self.resources_provider.cw_alarm().create_alarm,
EBS_TYPE:
self.resources_provider.ebs().create_ebs,
STEP_FUNCTION_TYPE:
self.resources_provider.step_functions().create_state_machine,
STATE_ACTIVITY_TYPE:
self.resources_provider.step_functions().create_activities,
KINESIS_STREAM_TYPE:
self.resources_provider.kinesis().create_kinesis_stream,
EC2_INSTANCE_TYPE:
self.resources_provider.ec2().create_ec2,
EC2_LAUNCH_TEMPLATE_TYPE:
self.resources_provider.ec2().create_launch_template,
BATCH_COMPENV_TYPE:
self.resources_provider.batch_compenv()
.create_compute_environment,
BATCH_JOBQUEUE_TYPE:
self.resources_provider.batch_jobqueue().create_job_queue,
BATCH_JOBDEF_TYPE:
self.resources_provider.batch_jobdef().register_job_definition,
DOCUMENTDB_CLUSTER_TYPE:
self.resources_provider.documentdb_cluster().create_db_cluster,
DOCUMENTDB_INSTANCE_TYPE:
self.resources_provider.documentdb_instance()
.create_db_instance,
DAX_CLUSTER_TYPE:
self.resources_provider.dax_cluster().create_cluster,
FIREHOSE_TYPE:
self.resources_provider.firehose().create_stream,
EVENT_BRIDGE_SCHEDULE_TYPE:
self.resources_provider.eventbridge_scheduler().create_schedule,
SWAGGER_UI_TYPE: self.resources_provider.swagger_ui().
create_update_swagger_ui,
APPSYNC_TYPE: self.resources_provider.appsync().create_graphql_api
}
def describe_handlers(self):
return {
IAM_POLICY:
self.resources_provider.iam().describe_policy,
IAM_ROLE:
self.resources_provider.iam().describe_role,
LAMBDA_TYPE:
self.resources_provider.lambda_resource().describe_lambda,
DYNAMO_TABLE_TYPE:
self.resources_provider.dynamodb().describe_table,
CLOUD_WATCH_RULE_TYPE:
self.resources_provider.cw().describe_rule_from_meta,
EVENT_BRIDGE_RULE_TYPE:
self.resources_provider.cw().describe_rule_from_meta,
S3_BUCKET_TYPE:
self.resources_provider.s3().describe_bucket,
API_GATEWAY_TYPE:
self.resources_provider.api_gw().describe_api_resources,
API_GATEWAY_OAS_V3_TYPE:
self.resources_provider.api_gw().describe_api_resources,
WEB_SOCKET_API_GATEWAY_TYPE:
self.resources_provider.api_gw().describe_v2_api_gateway,
COGNITO_USER_POOL_TYPE:
self.resources_provider.cognito_user_pool()
.describe_user_pool,
COGNITO_FEDERATED_POOL_TYPE:
self.resources_provider.cognito_identity().describe_cognito_pool,
SNS_TOPIC_TYPE:
self.resources_provider.sns().describe_sns_from_meta,
SNS_PLATFORM_APPLICATION_TYPE:
self.resources_provider.sns()
.describe_sns_application_from_meta,
SQS_QUEUE_TYPE:
self.resources_provider.sqs().describe_queue_from_meta,
CLOUD_WATCH_ALARM_TYPE:
self.resources_provider.cw_alarm().describe_alarm,
EBS_TYPE:
self.resources_provider.ebs().describe_ebs,
STEP_FUNCTION_TYPE:
self.resources_provider.step_functions()
.describe_step_function,
STATE_ACTIVITY_TYPE:
self.resources_provider.step_functions().describe_activity,
KINESIS_STREAM_TYPE:
self.resources_provider.kinesis().describe_kinesis_stream,
BATCH_COMPENV_TYPE:
self.resources_provider.batch_compenv()
.describe_compute_environment,
BATCH_JOBQUEUE_TYPE:
self.resources_provider.batch_jobqueue().describe_job_queue,
BATCH_JOBDEF_TYPE:
self.resources_provider.batch_jobdef().describe_job_definition,
DOCUMENTDB_CLUSTER_TYPE:
self.resources_provider.documentdb_cluster()
.describe_documentdb_cluster,
DOCUMENTDB_INSTANCE_TYPE:
self.resources_provider.documentdb_instance()
.describe_documentdb_instance,
DAX_CLUSTER_TYPE:
self.resources_provider.dax_cluster().describe_cluster,
FIREHOSE_TYPE:
self.resources_provider.firehose().describe_stream,
EVENT_BRIDGE_SCHEDULE_TYPE:
self.resources_provider.eventbridge_scheduler().describe_schedule,
SWAGGER_UI_TYPE: self.resources_provider.swagger_ui().
describe_swagger_ui,
EC2_LAUNCH_TEMPLATE_TYPE:
self.resources_provider.ec2().describe_launch_template,
LAMBDA_LAYER_TYPE:
self.resources_provider.lambda_resource().describe_lambda_layer,
APPSYNC_TYPE:
self.resources_provider.appsync().describe_graphql_api
}
def remove_handlers(self):
return {
CLOUD_WATCH_ALARM_TYPE:
self.resources_provider.cw_alarm().remove_alarms,
API_GATEWAY_TYPE:
self.resources_provider.api_gw().remove_api_gateways,
API_GATEWAY_OAS_V3_TYPE:
self.resources_provider.api_gw().remove_api_gateways,
WEB_SOCKET_API_GATEWAY_TYPE:
self.resources_provider.api_gw().remove_v2_api_gateway,
CLOUD_WATCH_RULE_TYPE:
self.resources_provider.cw().remove_cloud_watch_rules,
EVENT_BRIDGE_RULE_TYPE:
self.resources_provider.cw().remove_cloud_watch_rules,
COGNITO_USER_POOL_TYPE:
self.resources_provider.cognito_user_pool()
.remove_cognito_user_pools,
COGNITO_FEDERATED_POOL_TYPE:
self.resources_provider.cognito_identity()
.remove_cognito_identity_pools,
DYNAMO_TABLE_TYPE:
self.resources_provider.dynamodb().remove_dynamodb_tables,
EBS_TYPE:
self.resources_provider.ebs().remove_ebs_apps,
EC2_INSTANCE_TYPE:
self.resources_provider.ec2().remove_ec2_instances,
EC2_LAUNCH_TEMPLATE_TYPE:
self.resources_provider.ec2().remove_launch_templates,
IAM_ROLE:
self.resources_provider.iam().remove_roles,
IAM_POLICY:
self.resources_provider.iam().remove_policies,
KINESIS_STREAM_TYPE:
self.resources_provider.kinesis().remove_kinesis_streams,
LAMBDA_LAYER_TYPE:
self.resources_provider.lambda_resource().remove_lambda_layers,
LAMBDA_TYPE:
self.resources_provider.lambda_resource().remove_lambdas,
S3_BUCKET_TYPE:
self.resources_provider.s3().remove_buckets,
SNS_TOPIC_TYPE:
self.resources_provider.sns().remove_sns_topics,
SNS_PLATFORM_APPLICATION_TYPE:
self.resources_provider.sns().remove_sns_application,
SQS_QUEUE_TYPE:
self.resources_provider.sqs().remove_queues,
STEP_FUNCTION_TYPE:
self.resources_provider.step_functions().remove_state_machines,
STATE_ACTIVITY_TYPE:
self.resources_provider.step_functions().remove_activities,
BATCH_COMPENV_TYPE:
self.resources_provider.batch_compenv()
.remove_compute_environment,
BATCH_JOBQUEUE_TYPE:
self.resources_provider.batch_jobqueue().remove_job_queue,
BATCH_JOBDEF_TYPE:
self.resources_provider.batch_jobdef()
.deregister_job_definition,
DOCUMENTDB_CLUSTER_TYPE:
self.resources_provider.documentdb_cluster().remove_db_cluster,
DOCUMENTDB_INSTANCE_TYPE:
self.resources_provider.documentdb_instance()
.remove_db_instance,
DAX_CLUSTER_TYPE:
self.resources_provider.dax_cluster().remove_cluster,
FIREHOSE_TYPE:
self.resources_provider.firehose().delete_streams,
EVENT_BRIDGE_SCHEDULE_TYPE:
self.resources_provider.eventbridge_scheduler().remove_schedule,
SWAGGER_UI_TYPE: self.resources_provider.swagger_ui().
remove_swagger_ui,
APPSYNC_TYPE: self.resources_provider.appsync().remove_graphql_api
}
def update_handlers(self):
return {
IAM_ROLE:
self.resources_provider.iam().update_iam_role,
IAM_POLICY:
self.resources_provider.iam().update_iam_policy,
LAMBDA_TYPE:
self.resources_provider.lambda_resource().update_lambda,
LAMBDA_LAYER_TYPE:
self.resources_provider.lambda_resource().update_lambda_layer,
API_GATEWAY_OAS_V3_TYPE:
self.resources_provider.api_gw().update_api_gateway_openapi,
BATCH_JOBDEF_TYPE:
self.resources_provider.batch_jobdef().update_job_definition,
BATCH_COMPENV_TYPE:
self.resources_provider.batch_compenv()
.update_compute_environment,
EVENT_BRIDGE_SCHEDULE_TYPE:
self.resources_provider.eventbridge_scheduler()
.update_schedule,
DYNAMO_TABLE_TYPE:
self.resources_provider.dynamodb().update_tables,
SWAGGER_UI_TYPE: self.resources_provider.swagger_ui().
create_update_swagger_ui,
EC2_LAUNCH_TEMPLATE_TYPE:
self.resources_provider.ec2().update_launch_template,
APPSYNC_TYPE:
self.resources_provider.appsync().update_graphql_api
}
def resource_configuration_processor(self):
return {
API_GATEWAY_TYPE:
self.resources_provider.api_gw().api_gateway_update_processor
}
def resource_identifier(self):
return {
API_GATEWAY_TYPE:
self.resources_provider.api_gw().api_resource_identifier,
COGNITO_USER_POOL_TYPE:
self.resources_provider.cognito_user_pool()
.cognito_resource_identifier,
COGNITO_FEDERATED_POOL_TYPE:
self.resources_provider.cognito_identity()
.cognito_resource_identifier
}
def mapping_applier(self):
return {
IAM_ROLE: self.resources_provider.iam().apply_trusted_to_role,
IAM_POLICY: self.resources_provider.iam().apply_policy_content
}
def compare_meta_handlers(self):
return {
DYNAMO_TABLE_TYPE: self.resources_provider.dynamodb().compare_meta,
}