# Subsystem: app-tools **Kind:** cross-cutting **Files:** 17 **Functions:** 92, **Classes:** 4 ## Dependencies ### Depended On By - ← app-common: 1 calls, 0 imports - ← compute-tools: 4 calls, 0 imports - ← ipam-tools: 6 calls, 0 imports ## Public Exports - `Config` - `EnvExporter` - `FILES_TO_COPY` - `GitManager` - `cleanup` - `clone_repo` - `commit_and_push_changes` - `create_ak_sk` - `create_ak_sk_for_dph_user` - `create_ak_sk_for_es_user` - `create_ak_sk_for_export_user` - `create_aurora_mysql_db` - `create_db_subnet_group` - `create_gcp_bq_services` - `create_gcp_project` - `create_kms_key` - `create_rdm_gcp_bq_services` - `create_s3_buckets` - `create_security_group` - `display_help` - `emit_exports` - `enable_api_and_wait` - `enable_project_apis` - `ensure_gcs_bucket_exists` - `ensure_s3_bucket_exists` - `format_seconds` - `gcp_project_exists` - `generate_strong_password` - `get_aws_account_number` - `get_env_vars` - `get_matching_user` - `get_projects` - `get_rdm_mdm_companions` - `get_sensitive_input` - `get_verified_gcs_client` - `get_verified_s3_client` - `handle_api_error` - `list_private_subnets` - `list_rds_subnet_groups` - `log_error` - `log_exception` - `log_info` - `log_step` - `main` - `patch_crossaccount_mdm_companions` - `patch_mdm_policy_rdm_companion_arn` - `patch_mdm_systemdynamodb_shared_devops_api` - `patch_shared_devops_api_mdm_arns` - `patch_trust_policy_for_dataquality_snapshot` - `patch_vault_secret` - `print_summary` - `process_template_file` - `set` - `set_iam_policy_for_project` - `transfer_files` - `update_dynamic_secrets` - `update_terraform_config` - `vault_secret_bootstrap` - `wait_for_dynamodb_role` - `wait_for_operation`