runbooks 1.1.7__tar.gz → 1.1.10__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.
- {runbooks-1.1.7/src/runbooks.egg-info → runbooks-1.1.10}/PKG-INFO +74 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/README.md +73 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/pyproject.toml +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/__init__.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/__init___optimized.py +2 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/_platform/__init__.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/cli.py +4 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/cloud_foundations_assessment.py +1 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tests/test_cli.py +4 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/commands/finops.py +68 -19
- runbooks-1.1.10/src/runbooks/cli/commands/inventory.py +1156 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/commands/operate.py +65 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/commands/vpc.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/cost_optimizer.py +1 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/cli_decorators.py +6 -4
- runbooks-1.1.10/src/runbooks/common/config_loader.py +787 -0
- runbooks-1.1.10/src/runbooks/common/config_schema.py +280 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/dry_run_framework.py +14 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/mcp_integration.py +238 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/ebs_cost_optimizer.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/elastic_ip_optimizer.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/infrastructure/__init__.py +3 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/infrastructure/commands.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/infrastructure/load_balancer_optimizer.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/nat_gateway_optimizer.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/run_tests.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/ArgumentsClass.py +2 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/CLAUDE.md +41 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/README.md +210 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/test_Inventory_Modules.py +27 -10
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/test_cfn_describe_stacks.py +18 -7
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/test_ec2_describe_instances.py +30 -15
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/test_lambda_list_functions.py +17 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/test_org_list_accounts.py +17 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/account_class.py +0 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/all_my_instances_wrapper.py +4 -8
- runbooks-1.1.10/src/runbooks/inventory/aws_organization.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/check_cloudtrail_compliance.py +4 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/check_controltower_readiness.py +50 -47
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/check_landingzone_readiness.py +35 -31
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/cloud_foundations_integration.py +8 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/aws_compute.py +59 -11
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/aws_management.py +39 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/core/collector.py +1655 -159
- runbooks-1.1.10/src/runbooks/inventory/core/concurrent_paginator.py +511 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/discovery.md +15 -6
- runbooks-1.1.7/src/runbooks/inventory/draw_org_structure.py → runbooks-1.1.10/src/runbooks/inventory/draw_org.py +55 -9
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/drift_detection_cli.py +8 -68
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/find_cfn_drift_detection.py +14 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/find_cfn_orphaned_stacks.py +7 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/find_cfn_stackset_drift.py +5 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/find_ec2_security_groups.py +6 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/find_landingzone_versions.py +5 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/find_vpc_flow_logs.py +5 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/inventory.sh +20 -7
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/inventory_mcp_cli.py +4 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/inventory_modules.py +9 -7
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_cfn_stacks.py +18 -8
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_cfn_stackset_operation_results.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_cfn_stackset_operations.py +32 -20
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_cfn_stacksets.py +7 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_config_recorders_delivery_channels.py +4 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_ds_directories.py +3 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_ec2_availability_zones.py +7 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_ec2_ebs_volumes.py +3 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_ec2_instances.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_ecs_clusters_and_tasks.py +8 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_elbs_load_balancers.py +7 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_enis_network_interfaces.py +3 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_guardduty_detectors.py +9 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_iam_policies.py +7 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_iam_roles.py +3 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_iam_saml_providers.py +8 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_lambda_functions.py +8 -4
- runbooks-1.1.10/src/runbooks/inventory/list_org_accounts.py +474 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_org_accounts_users.py +45 -9
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_rds_db_instances.py +4 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_route53_hosted_zones.py +3 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_servicecatalog_provisioned_products.py +5 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_sns_topics.py +4 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_ssm_parameters.py +6 -3
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_vpc_subnets.py +8 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_vpcs.py +15 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/mcp_inventory_validator.py +771 -134
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/mcp_vpc_validator.py +6 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/organizations_discovery.py +17 -3
- runbooks-1.1.10/src/runbooks/inventory/organizations_utils.py +553 -0
- runbooks-1.1.10/src/runbooks/inventory/output_formatters.py +422 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/recover_cfn_stack_ids.py +5 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/run_on_multi_accounts.py +3 -3
- runbooks-1.1.10/src/runbooks/inventory/tag_coverage.py +481 -0
- runbooks-1.1.10/src/runbooks/inventory/validation_utils.py +358 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/verify_ec2_security_groups.py +18 -5
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/vpc_architecture_validator.py +7 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/vpc_dependency_analyzer.py +6 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/main_final.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/main_ultra_minimal.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/mcp/integration.py +6 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/acm_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/cloudtrail_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/cognito_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/dynamodb_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/ec2_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/kms_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/lambda_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/rds_remediation.py +2 -2
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_remediation.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cloudtrail_audit_integration.py +1 -1
- {runbooks-1.1.7 → runbooks-1.1.10/src/runbooks.egg-info}/PKG-INFO +74 -4
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks.egg-info/SOURCES.txt +9 -2
- runbooks-1.1.7/src/runbooks/__init__.py.backup +0 -134
- runbooks-1.1.7/src/runbooks/cli/commands/inventory.py +0 -332
- runbooks-1.1.7/src/runbooks/inventory/list_org_accounts.py +0 -444
- {runbooks-1.1.7 → runbooks-1.1.10}/LICENSE +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/MANIFEST.in +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/setup.cfg +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/conftest.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/__main__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/_platform/core/runbooks_wrapper.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/aws2/accuracy_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/base.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/WEIGHT_CONFIG_README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/app.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/asana-import.csv +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/cfat-checks.csv +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/cfat.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/collectors.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/compliance.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/jira-import.csv +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/runner.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/assessment/validators.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/asana-import.csv +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/cfat-checks.csv +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/cfat.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/checks-output.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/cloudshell-console-run.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/cloudshell-download.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/cloudshell-output.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/downloadfile.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/jira-import.csv +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/open-cloudshell.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/docs/report-header.png +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/models.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/package-lock.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/package.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/report.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/reporting/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/reporting/exporters.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/reporting/formatters.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/reporting/templates.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/run-assessment.sh +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/runner.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-cloudtrail-existence.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-config-existence.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-control-tower.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-ec2-existence.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-iam-users.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-legacy-cur.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-org-cloudformation.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/check-vpc-existence.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/create-asanaimport.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/create-backlog.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/create-jiraimport.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/create-report.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/define-account-type.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-enabled-org-policy-types.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-enabled-org-services.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-idc-info.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-org-da-accounts.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-org-details.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-org-member-accounts.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-org-ous.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/get-regions.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/actions/zip-assessment.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/src/types/index.d.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tests/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tests/test_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tests/test_models.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tests/test_reporting.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tests/test_weight_configuration.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/tsconfig.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/webpack.config.cjs +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cfat/weight_config.ts +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/commands/cfat.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/commands/security.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/commands/validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cli/registry.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/base.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/infrastructure_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/interfaces.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/lifecycle_manager.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/mcp_cost_validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/models.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/monitoring_automation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/notebook_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/cloudops/security_enforcer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/accuracy_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/aws_pricing.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/aws_pricing_api.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/aws_profile_manager.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/aws_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/business_logic.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/comprehensive_cost_explorer_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/context_logger.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/cross_account_manager.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/cross_module_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/date_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/decorators.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/dry_run_examples.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/enhanced_exception_handler.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/enhanced_logging_example.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/enhanced_logging_integration_example.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/enterprise_audit_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/env_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/error_handling.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/lazy_loader.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/logger.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/logging_integration_helper.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/mcp_cost_explorer_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/memory_optimization.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/module_cli_base.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/organizations_client.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/patterns.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/performance_monitor.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/performance_monitoring.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/performance_optimization_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/profile_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/rich_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/common/sre_performance_suite.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/config.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/enterprise/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/enterprise/error_handling.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/enterprise/logging.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/enterprise/multi_tenant.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/enterprise/security.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/enterprise/validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/feedback/user_feedback_collector.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/account_resolver.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/advanced_optimization_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/automation_core.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/aws_client.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/budget_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/business_case_config.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/cli.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/commvault_ec2_analysis.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/compute_cost_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/config.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/cost_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/cost_processor.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/dashboard_runner.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/enhanced_mcp_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/enhanced_progress.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/enhanced_trend_visualization.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/enterprise_wrappers.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/executive_export.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/helpers.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/iam_guidance.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/main.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/markdown_exporter.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/mcp_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/network_cost_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/notebook_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/optimization_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/profile_processor.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/rds_snapshot_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/reservation_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/scenario_cli_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/scenarios.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/schemas.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/service_mapping.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/snapshot_manager.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/run_comprehensive_tests.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/test_finops_dashboard.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/test_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/test_performance.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/test_performance_benchmarks.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/test_reference_images_validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/test_single_account_features.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/tests/validate_test_suite.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/types.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/validation_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/visualisations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/vpc_cleanup_exporter.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/vpc_cleanup_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/finops/workspaces_analyzer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/hitl/enhanced_workflow_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/integration/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/integration/mcp_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/.gitignore +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/LandingZone/delete_lz.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/common_test_data.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/common_test_functions.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/script_test_data.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/setup.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/src.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/Tests/test_moto_integration_example.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/aws_decorators.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/aws_comprehensive.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/aws_networking.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/base.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/collectors/enterprise_scale.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/core/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/core/formatter.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/ec2_vpc_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/list_rds_snapshots_aggregator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/models/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/models/account.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/models/inventory.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/models/resource.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/requirements.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/rich_inventory_display.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/unified_validation_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/utils/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/utils/aws_helpers.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/utils/threading_utils.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/utils/validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/vpc_analyzer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/inventory/vpc_flow_analyzer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/main.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/main_minimal.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/main_optimized.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/mcp/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/metrics/dora_metrics_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/monitoring/performance_monitor.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/base.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/cloudformation_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/cloudwatch_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/deployment_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/deployment_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/dynamodb_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/ec2_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/executive_dashboard.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/iam_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/mcp_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/nat_gateway_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/networking_cost_heatmap.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/privatelink_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/rds_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/s3_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/tagging_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/tags.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/vpc_endpoints.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/operate/vpc_operations.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/Tests/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/Tests/update_policy.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/acm_cert_expired_unused.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/api_gateway_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/base.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/cloudtrail_s3_modifications.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/cognito_active_users.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/cognito_user_password_reset.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/commons.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/commvault_ec2_analysis.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/config/accounts_example.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/dynamodb_optimize.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/dynamodb_server_side_encryption.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/ec2_public_ips.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/ec2_subnet_disable_auto_ip_assignment.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/ec2_unattached_ebs_volumes.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/ec2_unused_security_groups.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/kms_enable_key_rotation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/lambda_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/multi_account.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/rds_instance_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/rds_snapshot_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/remediation_cli.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/requirements.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_block_public_access.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_bucket_public_access.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_disable_static_website_hosting.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_downloader.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_enable_access_logging.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_encryption.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_force_ssl_secure_policy.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/s3_object_search.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/scan_for_phrase.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/universal_account_discovery.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/vpc_remediation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/remediation/workspaces_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/assessment_runner.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/baseline_checker.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/account_level_bucket_public_access.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/alternate_contacts.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/bucket_public_access.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/cloudwatch_alarm_configuration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/direct_attached_policy.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/guardduty_enabled.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/iam_password_policy.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/iam_user_mfa.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/multi_region_instance_usage.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/multi_region_trail.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/root_access_key.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/root_mfa.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/root_usage.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/trail_enabled.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/checklist/trusted_advisor.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/cloudops_automation_security_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/compliance_automation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/compliance_automation_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/config/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/config/compliance_config.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/config/compliance_weights_example.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/config-origin.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/config.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/config_template_generator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/enterprise_security_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/enterprise_security_policies.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/executive_security_dashboard.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/integration_test_enterprise_security.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/module_security_integrator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/multi_account_security_controls.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/permission.json +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/real_time_security_monitor.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/report_generator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/report_template_en.html +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/report_template_jp.html +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/report_template_kr.html +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/report_template_vn.html +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/run_script.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/security_baseline_tester.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/security_cli.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/security_export.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/test_2way_validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/two_way_validation_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/utils/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/utils/common.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/utils/enums.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/utils/language.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/utils/level_const.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/security/utils/permission_list.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/sre/README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/sre/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/sre/mcp_reliability_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/sre/performance_optimization_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/sre/production_monitoring_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/sre/reliability_monitoring_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/tdd/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/tdd/cli.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/utils/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/utils/logger.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/utils/version_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/benchmark.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/cli.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/comprehensive_2way_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/mcp_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/terraform_citations_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/validation/terraform_drift_detector.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/README.md +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/analyzer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cleanup_wrapper.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cli_cloudtrail_commands.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cli_mcp_validation_commands.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/config.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cost_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cost_explorer_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/cross_account_session.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/enhanced_mcp_validation.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/eni_gate_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/heatmap_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/manager_interface.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/mcp_no_eni_validator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/nat_gateway_optimizer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/networking_wrapper.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/pdca_remediation_planner.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/performance_optimized_analyzer.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/rich_formatters.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/runbooks_adapter.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tdd_red_phase_stubs.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/test_data_loader.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/__init__.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/conftest.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/test_cleanup_framework.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/test_cli_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/test_config.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/test_cost_engine.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/tests/test_networking_wrapper.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/topology_generator.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/unified_scenarios.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks/vpc/vpc_cleanup_integration.py +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks.egg-info/dependency_links.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks.egg-info/entry_points.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks.egg-info/requires.txt +0 -0
- {runbooks-1.1.7 → runbooks-1.1.10}/src/runbooks.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: runbooks
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.10
|
4
4
|
Summary: CloudOps Automation Toolkit with Enhanced Cloud Foundations Assessment for DevOps and SRE teams.
|
5
5
|
Author-email: Maintainers <nnthanh101@gmail.com>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -65,7 +65,7 @@ Dynamic: license-file
|
|
65
65
|
[](https://cloudops.oceansoft.io/runbooks/)
|
66
66
|
[](https://pypi.org/project/runbooks/)
|
67
67
|
|
68
|
-
> **Enterprise-
|
68
|
+
> **Enterprise-Grade Production-Ready AWS automation toolkit for DevOps and SRE teams managing Multi-Account Hybrid-Cloud environments at Scale** 🏢⚡
|
69
69
|
|
70
70
|
**Quick Value**: Discover, analyze, and optimize AWS resources across multi-account AWS environments with production-validated automation patterns.
|
71
71
|
|
@@ -171,8 +171,8 @@ runbooks inventory collect --profile $AWS_OPERATIONS_PROFILE --regions us-east-1
|
|
171
171
|
| 🏛️ **CFAT** | Cloud Foundations Assessment | `runbooks cfat assess` | Executive-ready compliance reports |
|
172
172
|
| ⚙️ **Operate** | Resource lifecycle management | `runbooks operate ec2 start` | Safe resource operations |
|
173
173
|
| 🔗 **VPC** | Network analysis & optimization | `runbooks vpc analyze` | Network cost optimization |
|
174
|
-
| 🏢 **Organizations** | OU structure management |
|
175
|
-
| 🛠️ **Remediation** | Automated security fixes |
|
174
|
+
| 🏢 **Organizations** [PLANNED] | OU structure management | Coming in v1.2 | Landing Zone automation |
|
175
|
+
| 🛠️ **Remediation** [PLANNED] | Automated security fixes | Coming in v1.2 | 50+ security playbooks |
|
176
176
|
|
177
177
|
## ⚡ Essential Commands Reference
|
178
178
|
|
@@ -225,6 +225,76 @@ runbooks operate cloudformation move-stack-instances \
|
|
225
225
|
--source-stackset old-baseline --target-stackset new-baseline --dry-run
|
226
226
|
```
|
227
227
|
|
228
|
+
### 🎨 CLI Parameter Flexibility (v1.1.10+)
|
229
|
+
|
230
|
+
**Enhanced UX**: All commands now support flexible format specification with **short flag support**
|
231
|
+
|
232
|
+
#### Triple Alias Pattern
|
233
|
+
Choose your preferred parameter style - all forms work identically:
|
234
|
+
|
235
|
+
| Style | Example | Use Case |
|
236
|
+
|-------|---------|----------|
|
237
|
+
| **Short** ✨ | `-f json` | Interactive CLI (save keystrokes) |
|
238
|
+
| **Standard** | `--format json` | Scripts & automation |
|
239
|
+
| **Legacy** | `--export-format json` | Backward compatibility |
|
240
|
+
|
241
|
+
#### Examples - All Three Forms Work
|
242
|
+
|
243
|
+
**Organization Visualization**:
|
244
|
+
```bash
|
245
|
+
# All three commands produce identical output
|
246
|
+
runbooks inventory draw-org -f graphviz --profile $MANAGEMENT_PROFILE
|
247
|
+
runbooks inventory draw-org --format graphviz --profile $MANAGEMENT_PROFILE
|
248
|
+
runbooks inventory draw-org --export-format graphviz --profile $MANAGEMENT_PROFILE
|
249
|
+
```
|
250
|
+
|
251
|
+
**Cost Analysis Export**:
|
252
|
+
```bash
|
253
|
+
# Choose your preferred style
|
254
|
+
runbooks finops analyze -f csv --profile $BILLING_PROFILE
|
255
|
+
runbooks finops analyze --format csv --profile $BILLING_PROFILE
|
256
|
+
runbooks finops analyze --export-format csv --profile $BILLING_PROFILE
|
257
|
+
```
|
258
|
+
|
259
|
+
**Account Inventory**:
|
260
|
+
```bash
|
261
|
+
# Short form for interactive use (NEW in v1.1.10)
|
262
|
+
runbooks inventory list-org-accounts -f json --output accounts.json
|
263
|
+
|
264
|
+
# Standard form for scripts
|
265
|
+
runbooks inventory list-org-accounts --format csv --output accounts.csv
|
266
|
+
|
267
|
+
# Legacy form (fully supported)
|
268
|
+
runbooks inventory list-org-accounts --export-format markdown --output accounts.md
|
269
|
+
```
|
270
|
+
|
271
|
+
#### Supported Commands (13 Total)
|
272
|
+
|
273
|
+
| Module | Command | Formats | v1.1.10 |
|
274
|
+
|--------|---------|---------|---------|
|
275
|
+
| Inventory | `draw-org` | graphviz, mermaid, diagrams | ✅ |
|
276
|
+
| Inventory | `list-org-accounts` | json, csv, markdown, table | ✅ |
|
277
|
+
| Inventory | `list-org-users` | json, csv, markdown, table | ✅ |
|
278
|
+
| Inventory | `find-lz-versions` | json, csv, markdown, table | ✅ |
|
279
|
+
| Inventory | `check-landingzone` | json, markdown, table | ✅ |
|
280
|
+
| Inventory | `check-controltower` | json, markdown, table | ✅ |
|
281
|
+
| FinOps | `infrastructure analyze` | json, csv, markdown | ✅ |
|
282
|
+
| FinOps | `elastic-ip` | json, csv, markdown | ✅ |
|
283
|
+
| FinOps | `ebs` | json, csv, markdown | ✅ |
|
284
|
+
| FinOps | `vpc-endpoint` | json, csv, markdown | ✅ |
|
285
|
+
| FinOps | `nat-gateway` | json, csv, markdown | ✅ |
|
286
|
+
| FinOps | `load-balancer` | json, csv, markdown | ✅ |
|
287
|
+
|
288
|
+
#### Migration Guide
|
289
|
+
|
290
|
+
**Zero Breaking Changes**: All existing scripts continue working without modification
|
291
|
+
|
292
|
+
**Adoption Path**:
|
293
|
+
- ✅ **Now**: All parameter forms work (choose preferred style)
|
294
|
+
- 💡 **Recommended**: Adopt `-f` for interactive CLI usage (faster typing)
|
295
|
+
- 📝 **Scripts**: Update at your convenience (no urgency)
|
296
|
+
- 🔄 **Future**: v1.2.0 will show deprecation warnings for legacy parameters
|
297
|
+
|
228
298
|
## 🏗️ Architecture Highlights
|
229
299
|
|
230
300
|
### Modern Stack
|
@@ -6,7 +6,7 @@
|
|
6
6
|
[](https://cloudops.oceansoft.io/runbooks/)
|
7
7
|
[](https://pypi.org/project/runbooks/)
|
8
8
|
|
9
|
-
> **Enterprise-
|
9
|
+
> **Enterprise-Grade Production-Ready AWS automation toolkit for DevOps and SRE teams managing Multi-Account Hybrid-Cloud environments at Scale** 🏢⚡
|
10
10
|
|
11
11
|
**Quick Value**: Discover, analyze, and optimize AWS resources across multi-account AWS environments with production-validated automation patterns.
|
12
12
|
|
@@ -112,8 +112,8 @@ runbooks inventory collect --profile $AWS_OPERATIONS_PROFILE --regions us-east-1
|
|
112
112
|
| 🏛️ **CFAT** | Cloud Foundations Assessment | `runbooks cfat assess` | Executive-ready compliance reports |
|
113
113
|
| ⚙️ **Operate** | Resource lifecycle management | `runbooks operate ec2 start` | Safe resource operations |
|
114
114
|
| 🔗 **VPC** | Network analysis & optimization | `runbooks vpc analyze` | Network cost optimization |
|
115
|
-
| 🏢 **Organizations** | OU structure management |
|
116
|
-
| 🛠️ **Remediation** | Automated security fixes |
|
115
|
+
| 🏢 **Organizations** [PLANNED] | OU structure management | Coming in v1.2 | Landing Zone automation |
|
116
|
+
| 🛠️ **Remediation** [PLANNED] | Automated security fixes | Coming in v1.2 | 50+ security playbooks |
|
117
117
|
|
118
118
|
## ⚡ Essential Commands Reference
|
119
119
|
|
@@ -166,6 +166,76 @@ runbooks operate cloudformation move-stack-instances \
|
|
166
166
|
--source-stackset old-baseline --target-stackset new-baseline --dry-run
|
167
167
|
```
|
168
168
|
|
169
|
+
### 🎨 CLI Parameter Flexibility (v1.1.10+)
|
170
|
+
|
171
|
+
**Enhanced UX**: All commands now support flexible format specification with **short flag support**
|
172
|
+
|
173
|
+
#### Triple Alias Pattern
|
174
|
+
Choose your preferred parameter style - all forms work identically:
|
175
|
+
|
176
|
+
| Style | Example | Use Case |
|
177
|
+
|-------|---------|----------|
|
178
|
+
| **Short** ✨ | `-f json` | Interactive CLI (save keystrokes) |
|
179
|
+
| **Standard** | `--format json` | Scripts & automation |
|
180
|
+
| **Legacy** | `--export-format json` | Backward compatibility |
|
181
|
+
|
182
|
+
#### Examples - All Three Forms Work
|
183
|
+
|
184
|
+
**Organization Visualization**:
|
185
|
+
```bash
|
186
|
+
# All three commands produce identical output
|
187
|
+
runbooks inventory draw-org -f graphviz --profile $MANAGEMENT_PROFILE
|
188
|
+
runbooks inventory draw-org --format graphviz --profile $MANAGEMENT_PROFILE
|
189
|
+
runbooks inventory draw-org --export-format graphviz --profile $MANAGEMENT_PROFILE
|
190
|
+
```
|
191
|
+
|
192
|
+
**Cost Analysis Export**:
|
193
|
+
```bash
|
194
|
+
# Choose your preferred style
|
195
|
+
runbooks finops analyze -f csv --profile $BILLING_PROFILE
|
196
|
+
runbooks finops analyze --format csv --profile $BILLING_PROFILE
|
197
|
+
runbooks finops analyze --export-format csv --profile $BILLING_PROFILE
|
198
|
+
```
|
199
|
+
|
200
|
+
**Account Inventory**:
|
201
|
+
```bash
|
202
|
+
# Short form for interactive use (NEW in v1.1.10)
|
203
|
+
runbooks inventory list-org-accounts -f json --output accounts.json
|
204
|
+
|
205
|
+
# Standard form for scripts
|
206
|
+
runbooks inventory list-org-accounts --format csv --output accounts.csv
|
207
|
+
|
208
|
+
# Legacy form (fully supported)
|
209
|
+
runbooks inventory list-org-accounts --export-format markdown --output accounts.md
|
210
|
+
```
|
211
|
+
|
212
|
+
#### Supported Commands (13 Total)
|
213
|
+
|
214
|
+
| Module | Command | Formats | v1.1.10 |
|
215
|
+
|--------|---------|---------|---------|
|
216
|
+
| Inventory | `draw-org` | graphviz, mermaid, diagrams | ✅ |
|
217
|
+
| Inventory | `list-org-accounts` | json, csv, markdown, table | ✅ |
|
218
|
+
| Inventory | `list-org-users` | json, csv, markdown, table | ✅ |
|
219
|
+
| Inventory | `find-lz-versions` | json, csv, markdown, table | ✅ |
|
220
|
+
| Inventory | `check-landingzone` | json, markdown, table | ✅ |
|
221
|
+
| Inventory | `check-controltower` | json, markdown, table | ✅ |
|
222
|
+
| FinOps | `infrastructure analyze` | json, csv, markdown | ✅ |
|
223
|
+
| FinOps | `elastic-ip` | json, csv, markdown | ✅ |
|
224
|
+
| FinOps | `ebs` | json, csv, markdown | ✅ |
|
225
|
+
| FinOps | `vpc-endpoint` | json, csv, markdown | ✅ |
|
226
|
+
| FinOps | `nat-gateway` | json, csv, markdown | ✅ |
|
227
|
+
| FinOps | `load-balancer` | json, csv, markdown | ✅ |
|
228
|
+
|
229
|
+
#### Migration Guide
|
230
|
+
|
231
|
+
**Zero Breaking Changes**: All existing scripts continue working without modification
|
232
|
+
|
233
|
+
**Adoption Path**:
|
234
|
+
- ✅ **Now**: All parameter forms work (choose preferred style)
|
235
|
+
- 💡 **Recommended**: Adopt `-f` for interactive CLI usage (faster typing)
|
236
|
+
- 📝 **Scripts**: Update at your convenience (no urgency)
|
237
|
+
- 🔄 **Future**: v1.2.0 will show deprecation warnings for legacy parameters
|
238
|
+
|
169
239
|
## 🏗️ Architecture Highlights
|
170
240
|
|
171
241
|
### Modern Stack
|
@@ -13,7 +13,7 @@
|
|
13
13
|
## Metadata: https://docs.astral.sh/uv/concepts/projects/config/
|
14
14
|
name = "runbooks"
|
15
15
|
## Enhanced with AWS Operations integration, unified CLI architecture, and comprehensive service operations
|
16
|
-
version = "1.1.
|
16
|
+
version = "1.1.10"
|
17
17
|
description = "CloudOps Automation Toolkit with Enhanced Cloud Foundations Assessment for DevOps and SRE teams."
|
18
18
|
readme = "README.md"
|
19
19
|
requires-python = ">=3.11,<3.14"
|
@@ -61,7 +61,7 @@ s3_ops = S3Operations()
|
|
61
61
|
|
62
62
|
# Centralized Version Management - Single Source of Truth
|
63
63
|
# All modules MUST import __version__ from this location
|
64
|
-
__version__ = "1.1.
|
64
|
+
__version__ = "1.1.10"
|
65
65
|
|
66
66
|
# Fallback for legacy importlib.metadata usage during transition
|
67
67
|
try:
|
@@ -10,7 +10,8 @@ This should reduce startup time from 5.6s to <0.5s for basic operations.
|
|
10
10
|
"""
|
11
11
|
|
12
12
|
# Centralized Version Management - Single Source of Truth
|
13
|
-
|
13
|
+
# This file is optimized variant - must sync with main __init__.py
|
14
|
+
__version__ = "1.1.9"
|
14
15
|
|
15
16
|
# Fallback for legacy importlib.metadata usage during transition
|
16
17
|
try:
|
@@ -6,7 +6,7 @@ and the FinOps notebook interfaces, enabling business-friendly access
|
|
6
6
|
to technical cost optimization capabilities.
|
7
7
|
"""
|
8
8
|
|
9
|
-
|
9
|
+
from runbooks import __version__
|
10
10
|
|
11
11
|
from .core.runbooks_wrapper import RunbooksWrapper
|
12
12
|
from .finops.unit_economics import UnitEconomicsCalculator
|
@@ -14,7 +14,6 @@ import click
|
|
14
14
|
from loguru import logger
|
15
15
|
|
16
16
|
from runbooks.cfat import __version__ as cfat_version
|
17
|
-
from runbooks.main import assess as main_assess
|
18
17
|
|
19
18
|
|
20
19
|
@click.group(invoke_without_command=True)
|
@@ -56,9 +55,11 @@ def main(ctx, debug, profile, region):
|
|
56
55
|
click.echo(ctx.get_help())
|
57
56
|
|
58
57
|
|
59
|
-
# Import and register the assess command from
|
58
|
+
# Import and register the assess command from modular commands
|
60
59
|
# This reuses the enhanced assess command with all its features
|
61
|
-
|
60
|
+
from runbooks.cli.commands.cfat import create_cfat_group
|
61
|
+
cfat_group = create_cfat_group()
|
62
|
+
main.add_command(cfat_group.commands['assess'], name="assess")
|
62
63
|
|
63
64
|
|
64
65
|
@main.command()
|
@@ -14,7 +14,10 @@ import pytest
|
|
14
14
|
from click.testing import CliRunner
|
15
15
|
|
16
16
|
from runbooks.cfat.tests import create_sample_assessment_report
|
17
|
-
|
17
|
+
# Updated import for slim main.py architecture (DRYCommandRegistry pattern)
|
18
|
+
# Old: from runbooks.main import assess, cfat, main
|
19
|
+
# New: Import main CLI entry point only - commands are dynamically registered
|
20
|
+
from runbooks.main import main
|
18
21
|
|
19
22
|
|
20
23
|
@pytest.mark.cli
|
@@ -96,13 +96,33 @@ def create_finops_group():
|
|
96
96
|
"accounts": accounts
|
97
97
|
})
|
98
98
|
|
99
|
+
# Auto-execute dashboard when no subcommand provided (eliminates "only logs" pattern)
|
99
100
|
if ctx.invoked_subcommand is None:
|
100
|
-
|
101
|
+
# Invoke dashboard with default parameters
|
102
|
+
ctx.invoke(dashboard,
|
103
|
+
profile=profile,
|
104
|
+
all_profiles=all_profiles,
|
105
|
+
timeframe='monthly',
|
106
|
+
services=None,
|
107
|
+
accounts=None,
|
108
|
+
validate=False,
|
109
|
+
validate_mcp=False,
|
110
|
+
mcp_validate=False,
|
111
|
+
csv=False,
|
112
|
+
markdown=False,
|
113
|
+
pdf=False,
|
114
|
+
json=False,
|
115
|
+
export_format=None,
|
116
|
+
unblended=False,
|
117
|
+
amortized=False,
|
118
|
+
dual_metrics=False,
|
119
|
+
dry_run=dry_run)
|
101
120
|
|
102
121
|
@finops.command()
|
103
122
|
@click.option("--profile", help="AWS profile to use for authentication")
|
104
123
|
@click.option(
|
105
|
-
"--all-
|
124
|
+
"--all-profile", type=str, default=None,
|
125
|
+
help="Management profile for Organizations API auto-discovery (MANAGEMENT_PROFILE, BILLING_PROFILE, or CENTRALISED_OPS_PROFILE)"
|
106
126
|
)
|
107
127
|
@click.option(
|
108
128
|
"--timeframe",
|
@@ -132,7 +152,7 @@ def create_finops_group():
|
|
132
152
|
def dashboard(
|
133
153
|
ctx,
|
134
154
|
profile,
|
135
|
-
|
155
|
+
all_profile,
|
136
156
|
timeframe,
|
137
157
|
services,
|
138
158
|
accounts,
|
@@ -163,33 +183,61 @@ def create_finops_group():
|
|
163
183
|
# Single account analysis
|
164
184
|
runbooks finops dashboard --profile BILLING_PROFILE --timeframe monthly --validate
|
165
185
|
|
166
|
-
# Multi-account Landing Zone analysis
|
167
|
-
runbooks finops dashboard --all-
|
186
|
+
# Multi-account Landing Zone analysis (Organizations auto-discovery)
|
187
|
+
runbooks finops dashboard --all-profile MANAGEMENT_PROFILE --mcp-validate
|
168
188
|
|
169
|
-
# Service-specific analysis across all accounts
|
170
|
-
runbooks finops dashboard --all-
|
189
|
+
# Service-specific analysis across all organization accounts
|
190
|
+
runbooks finops dashboard --all-profile MANAGEMENT_PROFILE --services ec2,s3
|
171
191
|
|
172
192
|
# Export multi-account analysis
|
173
|
-
runbooks finops dashboard --all-
|
193
|
+
runbooks finops dashboard --all-profile MANAGEMENT_PROFILE --export-format pdf
|
174
194
|
"""
|
175
|
-
# Handle multi-account Landing Zone analysis
|
176
|
-
if
|
195
|
+
# Handle multi-account Landing Zone analysis with Organizations API discovery
|
196
|
+
if all_profile:
|
177
197
|
try:
|
178
198
|
from runbooks.finops.dashboard_runner import MultiAccountDashboard, DashboardRouter
|
179
199
|
from runbooks.common.rich_utils import print_header, print_success, print_error, print_info
|
200
|
+
from runbooks.inventory.inventory_modules import get_org_accounts_from_profiles, get_profiles
|
180
201
|
import argparse
|
181
202
|
|
182
|
-
print_header("Multi-Account Landing Zone Dashboard",
|
183
|
-
console.print("[cyan]🏢
|
184
|
-
|
185
|
-
|
203
|
+
print_header("Multi-Account Landing Zone Dashboard", all_profile)
|
204
|
+
console.print("[cyan]🏢 Discovering AWS Organization accounts via Organizations API...[/cyan]")
|
205
|
+
|
206
|
+
# CORRECTED: Use management profile TEXT parameter for Organizations API access
|
207
|
+
try:
|
208
|
+
# Use management profile specified by user (MANAGEMENT_PROFILE, BILLING_PROFILE, or CENTRALISED_OPS_PROFILE)
|
209
|
+
mgmt_profile_list = get_profiles(fprofiles=[all_profile])
|
210
|
+
console.print(f"[dim]Querying Organizations API with profile: {all_profile}[/dim]")
|
211
|
+
|
212
|
+
org_accounts = get_org_accounts_from_profiles(mgmt_profile_list)
|
213
|
+
|
214
|
+
# Extract account IDs from discovered organization accounts
|
215
|
+
discovered_account_ids = []
|
216
|
+
for acct in org_accounts:
|
217
|
+
if acct.get("Success") and acct.get("RootAcct") and acct.get("aws_acct"):
|
218
|
+
# Root account found - extract all child accounts
|
219
|
+
for child in acct["aws_acct"].ChildAccounts:
|
220
|
+
discovered_account_ids.append(child["AccountId"])
|
221
|
+
|
222
|
+
if discovered_account_ids:
|
223
|
+
console.print(f"[green]✅ Discovered {len(discovered_account_ids)} organization accounts[/green]")
|
224
|
+
console.print(f"[dim]Analysis Scope: Organization-wide with Landing Zone support[/dim]\n")
|
225
|
+
else:
|
226
|
+
console.print(f"[yellow]⚠️ No organization accounts discovered - using single account mode[/yellow]")
|
227
|
+
console.print(f"[dim]Tip: Ensure {profile} has AWS Organizations permissions[/dim]\n")
|
228
|
+
|
229
|
+
except Exception as org_error:
|
230
|
+
console.print(f"[yellow]⚠️ Organizations discovery failed: {str(org_error)}[/yellow]")
|
231
|
+
console.print(f"[dim]Falling back to single account mode[/dim]\n")
|
232
|
+
discovered_account_ids = [] # Empty list for fallback
|
186
233
|
|
187
234
|
# Create mock args object for multi-dashboard compatibility
|
188
235
|
args = argparse.Namespace()
|
189
|
-
args.profile =
|
236
|
+
args.profile = all_profile # Use management profile for AWS Organizations access
|
190
237
|
args.timeframe = timeframe
|
191
238
|
args.services = services
|
192
|
-
|
239
|
+
# PHASE 2 ENHANCEMENT: Use Organizations-discovered accounts if available
|
240
|
+
args.accounts = tuple(discovered_account_ids) if discovered_account_ids else accounts
|
193
241
|
args.validate = validate or mcp_validate
|
194
242
|
# CRITICAL FIX: Handle multiple export format flags
|
195
243
|
export_formats = []
|
@@ -223,6 +271,7 @@ def create_finops_group():
|
|
223
271
|
args.top_accounts = 50 # Show many accounts for enterprise view
|
224
272
|
args.services_per_account = 3
|
225
273
|
args.time_range = None
|
274
|
+
args.audit = False # Not audit mode
|
226
275
|
args.tag = None
|
227
276
|
args.regions = None
|
228
277
|
|
@@ -247,11 +296,11 @@ def create_finops_group():
|
|
247
296
|
console.print(f"[red]❌ Multi-account dashboard not available: {e}[/red]")
|
248
297
|
console.print("[yellow]💡 Falling back to single-account mode with specified profile[/yellow]")
|
249
298
|
# Fallback to single account with the specified profile
|
250
|
-
resolved_profile =
|
299
|
+
resolved_profile = all_profile
|
251
300
|
except Exception as e:
|
252
301
|
console.print(f"[red]❌ Multi-account analysis failed: {e}[/red]")
|
253
|
-
console.print("[yellow]💡
|
254
|
-
resolved_profile =
|
302
|
+
console.print("[yellow]💡 Fallingback to single-account mode[/yellow]")
|
303
|
+
resolved_profile = all_profile
|
255
304
|
else:
|
256
305
|
resolved_profile = profile or ctx.obj.get("profile", "default")
|
257
306
|
|