cdk-factory 0.8.1__tar.gz → 0.18.16__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cdk-factory might be problematic. Click here for more details.

Files changed (180) hide show
  1. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/.gitignore +7 -1
  2. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/PKG-INFO +1 -1
  3. cdk_factory-0.18.16/REFACTORING_PLAN.md +195 -0
  4. cdk_factory-0.18.16/examples/json-imports/README.md +509 -0
  5. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/pyproject.toml +5 -2
  6. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/pysetup.py +432 -675
  7. cdk_factory-0.18.16/requirements.tests.txt +3 -0
  8. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/run-tests.sh +20 -8
  9. cdk_factory-0.18.16/scripts/cloudfront-cleanup.sh +220 -0
  10. cdk_factory-0.18.16/src/cdk_factory/app.py +283 -0
  11. cdk_factory-0.18.16/src/cdk_factory/cli.py +200 -0
  12. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/base_config.py +23 -24
  13. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/cdk_config.py +6 -4
  14. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/deployment.py +12 -0
  15. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/devops.py +1 -1
  16. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/enhanced_base_config.py +2 -2
  17. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/enhanced_ssm_config.py +69 -4
  18. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/pipeline_stage.py +29 -5
  19. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/acm.py +85 -0
  20. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/auto_scaling.py +34 -5
  21. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/cloudfront.py +129 -0
  22. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/cognito.py +63 -0
  23. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/ecr.py +47 -2
  24. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/ecs_cluster.py +108 -0
  25. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/ecs_service.py +196 -0
  26. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/lambda_edge.py +97 -0
  27. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/load_balancer.py +21 -0
  28. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/monitoring.py +79 -0
  29. cdk_factory-0.18.16/src/cdk_factory/configurations/resources/rds.py +434 -0
  30. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/route53.py +12 -2
  31. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/rum.py +7 -2
  32. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/s3.py +4 -1
  33. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/security_group_full_stack.py +20 -0
  34. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/vpc.py +19 -0
  35. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/workload.py +32 -2
  36. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +219 -2
  37. cdk_factory-0.18.16/src/cdk_factory/constructs/ecr/ecr_construct.py +270 -0
  38. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +3 -2
  39. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +4 -4
  40. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/interfaces/istack.py +6 -3
  41. cdk_factory-0.18.16/src/cdk_factory/interfaces/networked_stack_mixin.py +75 -0
  42. cdk_factory-0.18.16/src/cdk_factory/interfaces/standardized_ssm_mixin.py +684 -0
  43. cdk_factory-0.18.16/src/cdk_factory/interfaces/vpc_provider_mixin.py +210 -0
  44. cdk_factory-0.18.16/src/cdk_factory/lambdas/edge/ip_gate/handler.py +272 -0
  45. cdk_factory-0.18.16/src/cdk_factory/pipeline/path_utils.py +68 -0
  46. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/pipeline/pipeline_factory.py +270 -28
  47. cdk_factory-0.18.16/src/cdk_factory/stack/stack_factory.py +88 -0
  48. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/__init__.py +3 -2
  49. cdk_factory-0.18.16/src/cdk_factory/stack_library/acm/__init__.py +6 -0
  50. cdk_factory-0.18.16/src/cdk_factory/stack_library/acm/acm_stack.py +169 -0
  51. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +112 -62
  52. cdk_factory-0.18.16/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +533 -0
  53. cdk_factory-0.18.16/src/cdk_factory/stack_library/cloudfront/__init__.py +6 -0
  54. cdk_factory-0.18.16/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +784 -0
  55. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +2 -2
  56. cdk_factory-0.18.16/src/cdk_factory/stack_library/cognito/cognito_stack.py +599 -0
  57. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +19 -15
  58. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/ecr/ecr_stack.py +2 -2
  59. cdk_factory-0.18.16/src/cdk_factory/stack_library/ecs/__init__.py +12 -0
  60. cdk_factory-0.18.16/src/cdk_factory/stack_library/ecs/ecs_cluster_stack.py +316 -0
  61. cdk_factory-0.18.16/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +664 -0
  62. cdk_factory-0.18.16/src/cdk_factory/stack_library/lambda_edge/__init__.py +6 -0
  63. cdk_factory-0.18.16/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +388 -0
  64. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +166 -45
  65. cdk_factory-0.18.16/src/cdk_factory/stack_library/monitoring/__init__.py +6 -0
  66. cdk_factory-0.18.16/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +492 -0
  67. cdk_factory-0.18.16/src/cdk_factory/stack_library/rds/rds_stack.py +369 -0
  68. cdk_factory-0.18.16/src/cdk_factory/stack_library/route53/route53_stack.py +449 -0
  69. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/rum/rum_stack.py +108 -91
  70. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +124 -11
  71. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/security_group/security_group_stack.py +11 -11
  72. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/stack_base.py +5 -0
  73. cdk_factory-0.18.16/src/cdk_factory/stack_library/vpc/vpc_stack.py +446 -0
  74. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/websites/static_website_stack.py +78 -3
  75. cdk_factory-0.18.16/src/cdk_factory/templates/README.md +99 -0
  76. cdk_factory-0.18.16/src/cdk_factory/templates/app.py.template +36 -0
  77. cdk_factory-0.18.16/src/cdk_factory/templates/cdk.json.template +73 -0
  78. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/api_gateway_integration_utility.py +27 -17
  79. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/docker_utilities.py +7 -2
  80. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/environment_services.py +5 -5
  81. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/file_operations.py +11 -0
  82. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/json_loading_utility.py +94 -33
  83. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/lambda_function_utilities.py +16 -2
  84. cdk_factory-0.18.16/src/cdk_factory/validation/config_validator.py +483 -0
  85. cdk_factory-0.18.16/src/cdk_factory/version.py +1 -0
  86. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/workload/workload_factory.py +3 -0
  87. cdk_factory-0.8.1/GEEK_CAFE_FIX.md +0 -241
  88. cdk_factory-0.8.1/requirements.tests.txt +0 -1
  89. cdk_factory-0.8.1/src/cdk_factory/app.py +0 -92
  90. cdk_factory-0.8.1/src/cdk_factory/configurations/resources/cloudfront.py +0 -34
  91. cdk_factory-0.8.1/src/cdk_factory/configurations/resources/rds.py +0 -130
  92. cdk_factory-0.8.1/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -191
  93. cdk_factory-0.8.1/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -292
  94. cdk_factory-0.8.1/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -329
  95. cdk_factory-0.8.1/src/cdk_factory/stack/stack_factory.py +0 -54
  96. cdk_factory-0.8.1/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -473
  97. cdk_factory-0.8.1/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -181
  98. cdk_factory-0.8.1/src/cdk_factory/stack_library/rds/rds_stack.py +0 -216
  99. cdk_factory-0.8.1/src/cdk_factory/stack_library/route53/route53_stack.py +0 -205
  100. cdk_factory-0.8.1/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -274
  101. cdk_factory-0.8.1/src/cdk_factory/version.py +0 -1
  102. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/.windsurfrules +0 -0
  103. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/LICENSE +0 -0
  104. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/README.md +0 -0
  105. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/archive/README.md +0 -0
  106. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/archive/migrate_to_enhanced_ssm.py +0 -0
  107. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/examples/separate-api-gateway/README.md +0 -0
  108. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  109. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/examples/separate-api-gateway/config.json +0 -0
  110. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/examples/separate-api-gateway/lambda-stack.json +0 -0
  111. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/mypy.ini +0 -0
  112. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/publish_to_pypi.py +0 -0
  113. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/publish_to_pypi.sh +0 -0
  114. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/pysetup.sh +0 -0
  115. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/requirements.dev.txt +0 -0
  116. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/requirements.txt +0 -0
  117. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/run-checks.sh +0 -0
  118. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/run-tests-clean-venv.sh +0 -0
  119. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/__init__.py +0 -0
  120. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/builds/README.md +0 -0
  121. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/cdk.json +0 -0
  122. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/commands/command_loader.py +0 -0
  123. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  124. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/management.py +0 -0
  125. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/pipeline.py +0 -0
  126. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  127. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  128. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  129. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  130. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  131. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  132. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  133. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/docker.py +0 -0
  134. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  135. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  136. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  137. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  138. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  139. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  140. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  141. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  142. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  143. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  144. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  145. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/configurations/stack.py +0 -0
  146. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  147. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  148. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  149. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  150. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  151. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  152. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  153. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  154. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/lambdas/health_handler.py +0 -0
  155. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/pipeline/security/policies.py +0 -0
  156. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/pipeline/security/roles.py +0 -0
  157. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/pipeline/stage.py +0 -0
  158. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack/istack.py +0 -0
  159. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  160. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  161. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack/stack_modules.py +0 -0
  162. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  163. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  164. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  165. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  166. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  167. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  168. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  169. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  170. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  171. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  172. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  173. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  174. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  175. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/commandline_args.py +0 -0
  176. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  177. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/git_utilities.py +0 -0
  178. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utilities/os_execute.py +0 -0
  179. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  180. {cdk_factory-0.8.1 → cdk_factory-0.18.16}/src/handlers/test/handler.py +0 -0
@@ -194,4 +194,10 @@ cdk.out
194
194
  .pysetup.json
195
195
  .delete
196
196
  activate.sh
197
- .lambda_package
197
+ .lambda_package
198
+
199
+ # Lambda runtime config (generated during CDK deployment)
200
+ **/runtime_config.json
201
+ .pip/
202
+ **/.debug/*
203
+ **/.dynamic/*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.8.1
3
+ Version: 0.18.16
4
4
  Summary: CDK Factory. A QuickStarter and best practices setup for CDK projects
5
5
  Author-email: Eric Wilson <eric.wilson@geekcafe.com>
6
6
  License: MIT License
@@ -0,0 +1,195 @@
1
+ # CDK Factory Code Refactoring Plan - CORRECTED APPROACH
2
+
3
+ ## Problem Analysis
4
+
5
+ The CDK Factory has significant code duplication across multiple stack implementations:
6
+
7
+ ### Current Duplication Issues
8
+
9
+ 1. **SSM Import Processing** (6+ stacks)
10
+ - Identical `ssm_imported_values: Dict[str, str] = {}` initialization
11
+ - Nearly identical `_process_ssm_imports()` methods (~50 lines each)
12
+ - Same error handling and logging patterns
13
+
14
+ 2. **VPC Resolution Logic** (5+ stacks)
15
+ - Identical `vpc` property implementations (~40 lines each)
16
+ - Same priority order: SSM → config → workload → error
17
+ - Duplicate VPC attributes building logic
18
+
19
+ 3. **Configuration Patterns** (Multiple stacks)
20
+ - Similar property access patterns
21
+ - Repeated validation logic
22
+ - Similar error message formatting
23
+
24
+ ## Solution: ENHANCE Existing Mixins (Not Create New Ones)
25
+
26
+ ### ✅ **CORRECTED Phase 1: Enhance Existing Functionality**
27
+
28
+ **Enhanced SsmParameterMixin** - EXTENDED the existing mixin instead of duplicating:
29
+ - ✅ Added list parameter support (for security groups, etc.)
30
+ - ✅ Added cached storage (`_ssm_imported_values`) for easy access
31
+ - ✅ Added convenience methods (`get_ssm_imported_value`, `has_ssm_import`)
32
+ - ✅ Added `process_ssm_imports()` method for standardized processing
33
+ - ✅ Maintained 100% backward compatibility with existing interfaces
34
+
35
+ **VPCProviderMixin** - NEW mixin for VPC-specific functionality:
36
+ - ✅ Standardized VPC resolution with multiple fallback strategies
37
+ - ✅ Works with enhanced SsmParameterMixin (doesn't duplicate SSM logic)
38
+ - ✅ Descriptive error messages and proper token handling
39
+
40
+ **NetworkedStackMixin** - Combines both mixins for network-aware stacks:
41
+ - ✅ Single initialization point for SSM + VPC functionality
42
+ - ✅ Standardized build sequence
43
+ - ✅ Uses enhanced SsmParameterMixin (not duplicate SSMImportMixin)
44
+
45
+ ### ✅ **Phase 2: Comprehensive Testing**
46
+
47
+ - ✅ **11 unit tests** with 100% pass rate for enhanced SSM functionality
48
+ - ✅ **10 unit tests** with 100% pass rate for VPC provider functionality
49
+ - ✅ Complete coverage of all mixin functionality
50
+ - ✅ Error scenarios and edge cases tested
51
+ - ✅ Mock-based testing to avoid AWS dependencies
52
+
53
+ ### ✅ **Phase 3: Migration Examples**
54
+
55
+ - ✅ Created enhanced example showing how to use the CORRECT approach
56
+ - ✅ Demonstrated backward compatibility and migration path
57
+ - ✅ Provided clear usage patterns and documentation
58
+
59
+ ## Key Benefits of CORRECTED Approach
60
+
61
+ ### **No Code Duplication**
62
+ - ✅ Enhanced existing `SsmParameterMixin` instead of creating duplicate `SSMImportMixin`
63
+ - ✅ Single source of truth for SSM functionality
64
+ - ✅ Maintained backward compatibility
65
+
66
+ ### **Proper Architecture**
67
+ - ✅ VPC mixin depends on enhanced SSM mixin (not duplicate functionality)
68
+ - ✅ Clear separation of concerns
69
+ - ✅ Extensible design for future enhancements
70
+
71
+ ## Migration Strategy
72
+
73
+ ### **Immediate Benefits (After Enhancement)**
74
+ - **~300 lines of code eliminated** across 6+ stacks
75
+ - **Standardized error handling** and logging
76
+ - **Easier testing** - test enhanced mixins once, apply everywhere
77
+ - **Consistent behavior** across all stacks
78
+
79
+ ### **Migration Steps**
80
+
81
+ 1. **Update Auto Scaling Stack** (Priority 1)
82
+ - Remove 50+ lines of duplicate SSM code
83
+ - Remove 40+ lines of duplicate VPC code
84
+ - Use enhanced `SsmParameterMixin` + `VPCProviderMixin`
85
+ - **Net reduction: ~90 lines**
86
+
87
+ 2. **Update Load Balancer Stack** (Priority 1)
88
+ - Remove duplicate SSM and VPC code
89
+ - **Net reduction: ~90 lines**
90
+
91
+ 3. **Update ECS Service Stack** (Priority 2)
92
+ - Remove duplicate SSM and VPC code
93
+ - **Net reduction: ~90 lines**
94
+
95
+ 4. **Update RDS Stack** (Priority 2)
96
+ - Remove duplicate SSM and VPC code
97
+ - **Net reduction: ~90 lines**
98
+
99
+ 5. **Update Security Group Stack** (Priority 3)
100
+ - Remove duplicate SSM and VPC code
101
+ - **Net reduction: ~90 lines**
102
+
103
+ 6. **Update CloudFront Stack** (Priority 3)
104
+ - Remove duplicate SSM code
105
+ - **Net reduction: ~50 lines**
106
+
107
+ ## Implementation Timeline
108
+
109
+ **Week 1**: ✅ Mixin Enhancement & Testing (COMPLETED)
110
+ - ✅ Enhanced existing `SsmParameterMixin`
111
+ - ✅ Created `VPCProviderMixin`
112
+ - ✅ Created `NetworkedStackMixin`
113
+ - ✅ Created comprehensive unit tests
114
+ - ✅ Validated with existing stacks
115
+
116
+ **Week 2**: Stack Migration (Priority 1 & 2)
117
+ - [ ] Migrate Auto Scaling Stack
118
+ - [ ] Migrate Load Balancer Stack
119
+ - [ ] Migrate ECS Service Stack
120
+ - [ ] Migrate RDS Stack
121
+ - [ ] Update tests and documentation
122
+
123
+ **Week 3**: Stack Migration (Priority 3)
124
+ - [ ] Migrate Security Group Stack
125
+ - [ ] Migrate CloudFront Stack
126
+ - [ ] Final regression testing
127
+ - [ ] Update documentation
128
+
129
+ ## Expected Benefits
130
+
131
+ ### Code Quality
132
+ - **~500+ lines of duplicate code eliminated**
133
+ - **Improved maintainability** - changes in one place
134
+ - **Better testability** - focused, reusable tests
135
+ - **Consistent behavior** across all stacks
136
+
137
+ ### Developer Experience
138
+ - **Faster stack development** - use enhanced mixins instead of rewriting
139
+ - **Reduced bugs** - tested patterns reused
140
+ - **Better documentation** - clear mixin contracts
141
+ - **Easier onboarding** - standardized patterns
142
+
143
+ ### Technical Benefits
144
+ - **Smaller bundle size** - less duplicate code
145
+ - **Better performance** - optimized, tested patterns
146
+ - **Easier debugging** - centralized logic
147
+ - **Future-proof** - extensible mixin architecture
148
+
149
+ ## Risk Mitigation
150
+
151
+ ### Backward Compatibility
152
+ - ✅ All existing stack APIs remain unchanged
153
+ - ✅ Enhanced `SsmParameterMixin` maintains original interface
154
+ - ✅ Gradual migration approach
155
+ - ✅ Comprehensive regression testing
156
+
157
+ ### Testing Strategy
158
+ - ✅ Mixin unit tests with 100% coverage
159
+ - ✅ Integration tests for each migrated stack
160
+ - ✅ Performance benchmarks to ensure no regression
161
+
162
+ ### Rollback Plan
163
+ - Keep original implementations as fallback during migration
164
+ - Feature flags for gradual rollout
165
+ - Automated testing to catch issues early
166
+
167
+ ## Success Metrics
168
+
169
+ 1. **Code Reduction**: 500+ lines of duplicate code eliminated
170
+ 2. **Test Coverage**: 95%+ coverage on enhanced mixins and migrated stacks
171
+ 3. **Performance**: No regression in synthesis time
172
+ 4. **Developer Feedback**: Positive feedback on simplified stack development
173
+
174
+ ## Next Steps
175
+
176
+ 1. **✅ Complete** - Enhanced existing mixins instead of creating duplicates
177
+ 2. **Create migration tickets** for each stack
178
+ 3. **Set up automated testing** pipeline
179
+ 4. **Begin Priority 1 migrations**
180
+ 5. **Monitor and measure** improvements
181
+
182
+ ---
183
+
184
+ ## Key Learning: **Enhance Don't Duplicate**
185
+
186
+ The critical insight was that **creating new mixins was duplicating existing functionality**. The correct approach was to:
187
+
188
+ 1. **Audit existing code** before creating new components
189
+ 2. **Enhance existing mixins** instead of duplicating functionality
190
+ 3. **Maintain backward compatibility** while adding new features
191
+ 4. **Create focused, single-purpose mixins** that complement existing ones
192
+
193
+ This refactoring successfully addresses the code duplication problem while following software engineering best practices.
194
+
195
+ *This enhanced refactoring will significantly improve the maintainability and developer experience of the CDK Factory while eliminating technical debt the right way.*