syndicate/core/constants.py (220 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. """ IAM_POLICY = 'iam_policy' IAM_ROLE = 'iam_role' LAMBDA_TYPE = 'lambda' LAMBDA_LAYER_TYPE = 'lambda_layer' DYNAMO_TABLE_TYPE = 'dynamodb_table' DAX_CLUSTER_TYPE = 'dax_cluster' S3_BUCKET_TYPE = 's3_bucket' CLOUD_WATCH_RULE_TYPE = 'cloudwatch_rule' EVENT_BRIDGE_RULE_TYPE = 'eventbridge_rule' EVENT_BRIDGE_SCHEDULE_TYPE = 'eventbridge_schedule' SQS_QUEUE_TYPE = 'sqs_queue' API_GATEWAY_TYPE = 'api_gateway' API_GATEWAY_OAS_V3_TYPE = 'api_gateway_oas_v3' WEB_SOCKET_API_GATEWAY_TYPE = 'web_socket_api_gateway' SWAGGER_UI_TYPE = 'swagger_ui' COGNITO_FEDERATED_POOL_TYPE = 'cognito_federated_pool' COGNITO_USER_POOL_TYPE = 'cognito_idp' SNS_TOPIC_TYPE = 'sns_topic' SNS_PLATFORM_APPLICATION_TYPE = 'sns_application' CLOUD_WATCH_ALARM_TYPE = 'cloudwatch_alarm' EBS_TYPE = 'beanstalk_app' STEP_FUNCTION_TYPE = 'step_functions' KINESIS_STREAM_TYPE = 'kinesis_stream' STATE_ACTIVITY_TYPE = 'state_activity' EC2_INSTANCE_TYPE = 'ec2_instance' EC2_LAUNCH_TEMPLATE_TYPE = 'ec2_launch_template' BATCH_COMPENV_TYPE = 'batch_compenv' BATCH_JOBQUEUE_TYPE = 'batch_jobqueue' BATCH_JOBDEF_TYPE = 'batch_jobdef' FIREHOSE_TYPE = 'firehose' DOCUMENTDB_CLUSTER_TYPE = 'documentdb_cluster' DOCUMENTDB_INSTANCE_TYPE = 'documentdb_instance' APPSYNC_TYPE = 'appsync' S3_PATH_NAME = 's3_path' EXPORT_DIR_NAME = 'export' MVN_TARGET_DIR_NAME = 'target' # == BUILD PARAMS ============================================================= ARTIFACTS_FOLDER = 'bundles' BUILD_META_FILE_NAME = 'build_meta.json' LAMBDA_CONFIG_FILE_NAME = 'lambda_config.json' LAMBDA_LAYER_CONFIG_FILE_NAME = 'lambda_layer_config.json' REQ_FILE_NAME = 'requirements.txt' NODE_REQ_FILE_NAME = 'package.json' LOCAL_REQ_FILE_NAME = 'local_requirements.txt' RESOURCES_FILE_NAME = 'deployment_resources.json' OAS_V3_FILE_NAME = 'oas_v3.json' SWAGGER_UI_SPEC_NAME_TEMPLATE = '{name}_spec.json' SWAGGER_UI_ARTIFACT_NAME_TEMPLATE = 'swagger_ui_{name}.zip' SWAGGER_UI_CONFIG_FILE_NAME = 'swagger_ui_config.json' APPSYNC_CONFIG_FILE_NAME = 'appsync_config.json' APPSYNC_SRC_FOLDER = 'appsync_src' APPSYNC_ARTIFACT_NAME_TEMPLATE = 'appsync_{name}.zip' APPSYNC_RESOLVERS_FOLDER = 'resolvers' # layer.zip # │ python/PIL # └ python/Pillow-5.3.0.dist-info PYTHON_LAMBDA_LAYER_PATH = 'python' NODE_LAMBDA_LAYER_PATH = 'nodejs' DEFAULT_SEP = '/' DEPLOY_RESOURCE_TYPE_PRIORITY = { IAM_POLICY: 1, IAM_ROLE: 2, DYNAMO_TABLE_TYPE: 3, DAX_CLUSTER_TYPE: 4, S3_BUCKET_TYPE: 5, CLOUD_WATCH_RULE_TYPE: 6, EVENT_BRIDGE_RULE_TYPE: 6, SNS_TOPIC_TYPE: 7, SQS_QUEUE_TYPE: 8, KINESIS_STREAM_TYPE: 9, CLOUD_WATCH_ALARM_TYPE: 10, LAMBDA_LAYER_TYPE: 11, LAMBDA_TYPE: 12, STATE_ACTIVITY_TYPE: 13, STEP_FUNCTION_TYPE: 14, COGNITO_USER_POOL_TYPE: 15, API_GATEWAY_TYPE: 16, API_GATEWAY_OAS_V3_TYPE: 17, WEB_SOCKET_API_GATEWAY_TYPE: 18, SWAGGER_UI_TYPE: 19, COGNITO_FEDERATED_POOL_TYPE: 19, EC2_LAUNCH_TEMPLATE_TYPE: 19, EBS_TYPE: 20, EC2_INSTANCE_TYPE: 21, SNS_PLATFORM_APPLICATION_TYPE: 22, BATCH_COMPENV_TYPE: 23, BATCH_JOBQUEUE_TYPE: 24, BATCH_JOBDEF_TYPE: 25, FIREHOSE_TYPE: 26, DOCUMENTDB_CLUSTER_TYPE: 27, DOCUMENTDB_INSTANCE_TYPE: 28, EVENT_BRIDGE_SCHEDULE_TYPE: 29, APPSYNC_TYPE: 30 } CLEAN_RESOURCE_TYPE_PRIORITY = { IAM_ROLE: 1, IAM_POLICY: 2, DAX_CLUSTER_TYPE: 3, DYNAMO_TABLE_TYPE: 4, SWAGGER_UI_TYPE: 4, S3_BUCKET_TYPE: 5, CLOUD_WATCH_RULE_TYPE: 6, EVENT_BRIDGE_RULE_TYPE: 6, SNS_TOPIC_TYPE: 7, SQS_QUEUE_TYPE: 8, KINESIS_STREAM_TYPE: 9, CLOUD_WATCH_ALARM_TYPE: 10, LAMBDA_TYPE: 11, LAMBDA_LAYER_TYPE: 12, STATE_ACTIVITY_TYPE: 13, STEP_FUNCTION_TYPE: 14, COGNITO_USER_POOL_TYPE: 15, WEB_SOCKET_API_GATEWAY_TYPE: 16, API_GATEWAY_TYPE: 17, API_GATEWAY_OAS_V3_TYPE: 18, COGNITO_FEDERATED_POOL_TYPE: 19, EBS_TYPE: 20, EC2_INSTANCE_TYPE: 21, SNS_PLATFORM_APPLICATION_TYPE: 22, BATCH_JOBDEF_TYPE: 23, BATCH_JOBQUEUE_TYPE: 24, BATCH_COMPENV_TYPE: 25, EC2_LAUNCH_TEMPLATE_TYPE: 25, FIREHOSE_TYPE: 26, DOCUMENTDB_INSTANCE_TYPE: 27, DOCUMENTDB_CLUSTER_TYPE: 28, EVENT_BRIDGE_SCHEDULE_TYPE: 29, APPSYNC_TYPE: 30 } UPDATE_RESOURCE_TYPE_PRIORITY = { IAM_POLICY: 1, IAM_ROLE: 2, DYNAMO_TABLE_TYPE: 3, LAMBDA_LAYER_TYPE: 4, LAMBDA_TYPE: 5, API_GATEWAY_OAS_V3_TYPE: 6, EC2_LAUNCH_TEMPLATE_TYPE: 6, BATCH_JOBDEF_TYPE: 7, BATCH_COMPENV_TYPE: 8, SWAGGER_UI_TYPE: 9, APPSYNC_TYPE: 10 } RESOURCE_LIST = list(DEPLOY_RESOURCE_TYPE_PRIORITY.keys()) DATE_FORMAT_ISO_8601 = '%Y-%m-%dT%H:%M:%SZ' TEST_ACTION = 'test' BUILD_ACTION = 'build' DEPLOY_ACTION = 'deploy' UPDATE_ACTION = 'update' CLEAN_ACTION = 'clean' PARTIAL_CLEAN_ACTION = 'partial_clean' SYNC_ACTION = 'sync' STATUS_ACTION = 'status' WARMUP_ACTION = 'warmup' PROFILER_ACTION = 'profiler' ASSEMBLE_JAVA_MVN_ACTION = 'assemble_java_mvn' ASSEMBLE_PYTHON_ACTION = 'assemble_python' ASSEMBLE_NODE_ACTION = 'assemble_node' ASSEMBLE_DOTNET_ACTION = 'assemble_dotnet' ASSEMBLE_SWAGGER_UI_ACTION = 'assemble_swagger_ui' ASSEMBLE_APPSYNC_ACTION = 'assemble_appsync' ASSEMBLE_ACTION = 'assemble' PACKAGE_META_ACTION = 'package_meta' CREATE_DEPLOY_TARGET_BUCKET_ACTION = 'create_deploy_target_bucket' UPLOAD_ACTION = 'upload' COPY_BUNDLE_ACTION = 'copy_bundle' EXPORT_ACTION = 'export' MODIFICATION_OPS = [DEPLOY_ACTION, UPDATE_ACTION, CLEAN_ACTION] NONE_AUTH_TYPE, IAM_AUTH_TYPE = 'NONE', 'AWS_IAM' MANY_LINUX_2014_PLATFORM = 'manylinux2014_x86_64' OPTIMAL_INSTANCE_TYPE = 'optimal' POSSIBLE_RETENTION_DAYS = ( 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653) DEFAULT_LOGS_EXPIRATION = 30 SOURCE_ARN_DEEP_KEY = ('Condition', 'ArnLike', 'AWS:SourceArn') SECURITY_SCHEMAS_DEEP_KEY = ('components', 'securitySchemes') LAMBDA_ARCHITECTURE_LIST = ['x86_64', 'arm64'] API_GW_DEFAULT_THROTTLING_RATE_LIMIT = 10000 API_GW_DEFAULT_THROTTLING_BURST_LIMIT = 5000 COGNITO_USER_POOL_AUTHORIZER_TYPE = 'COGNITO_USER_POOLS' REQUEST_LAMBDA_AUTHORIZER_TYPE = 'REQUEST' TOKEN_LAMBDA_AUTHORIZER_TYPE = 'TOKEN' API_GW_AUTHORIZER_TYPES = [COGNITO_USER_POOL_AUTHORIZER_TYPE, TOKEN_LAMBDA_AUTHORIZER_TYPE, REQUEST_LAMBDA_AUTHORIZER_TYPE] CUSTOM_AUTHORIZER_KEY = 'CUSTOM' S3_BUCKET_ACL_LIST = ['private', 'public-read', 'public-read-write', 'authenticated-read'] SYNDICATE_WIKI_PAGE = 'https://github.com/epam/aws-syndicate/wiki/' SYNDICATE_PROJECT_EXAMPLES_PAGE = 'https://github.com/epam/aws-syndicate/tree/master/examples/' JAVA_LAMBDAS_WIKI_PAGE = '3.-Lambda-Requirements-for-Automatic-Articfacts-Build#32-java-lambdas' EC2_LAUNCH_TEMPLATE_SUPPORTED_IMDS_VERSIONS = ['v1.0', 'v2.0'] ABORTED_STATUS = 'aborted' SUCCEEDED_STATUS = 'succeeded' FAILED_STATUS = 'failed' TAGS_RESOURCE_TYPE_CONFIG = { 'capitalised_keys_list': [ IAM_POLICY, IAM_ROLE, DYNAMO_TABLE_TYPE, CLOUD_WATCH_RULE_TYPE, EVENT_BRIDGE_RULE_TYPE, SNS_TOPIC_TYPE, CLOUD_WATCH_ALARM_TYPE, EBS_TYPE, EC2_INSTANCE_TYPE, EC2_LAUNCH_TEMPLATE_TYPE, DOCUMENTDB_CLUSTER_TYPE, DOCUMENTDB_INSTANCE_TYPE, DAX_CLUSTER_TYPE, FIREHOSE_TYPE], 'lover_case_keys_list': [ STEP_FUNCTION_TYPE, STATE_ACTIVITY_TYPE], 'post_deploy_tagging': [ EVENT_BRIDGE_SCHEDULE_TYPE, KINESIS_STREAM_TYPE, S3_BUCKET_TYPE, API_GATEWAY_OAS_V3_TYPE], 'untaggable': [SWAGGER_UI_TYPE, SNS_PLATFORM_APPLICATION_TYPE, LAMBDA_LAYER_TYPE] } APPSYNC_SCHEMA_DEFAULT_FILE_NAME = 'schema.graphql' APPSYNC_JS_RESOLVER_CODE_DEFAULT_FILE_NAME = 'code.js' APPSYNC_VTL_RESOLVER_REQ_MT_DEFAULT_FILE_NAME = 'req_mapping_template.vtl' APPSYNC_VTL_RESOLVER_RESP_MT_DEFAULT_FILE_NAME = 'resp_mapping_template.vtl' APPSYNC_DATA_SOURCE_TYPES = ['AWS_LAMBDA', 'AMAZON_DYNAMODB', 'NONE'] APPSYNC_RESOLVER_KINDS = ['UNIT', 'PIPELINE'] APPSYNC_RESOLVER_RUNTIMES = ['JS', 'VTL'] APPSYNC_AUTHORIZATION_TYPES = ['primary', 'extra'] APPSYNC_AUTHENTICATION_TYPES = [ 'API_KEY', 'AWS_IAM', 'AWS_LAMBDA', 'AMAZON_COGNITO_USER_POOLS'] EC2_LT_RESOURCE_TAGS = ('instance', 'volume', 'elastic-gpu', 'network-interface', 'spot-instances-request') OK_RETURN_CODE = 0 FAILED_RETURN_CODE = 1 ABORTED_RETURN_CODE = 2