aws-parallelcluster 3.16.0__tar.gz → 3.16.2__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.
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/PKG-INFO +2 -1
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/setup.py +2 -1
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/PKG-INFO +2 -1
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/openapi/openapi.yaml +1 -1
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/aws_resources.py +1 -1
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/logs.py +24 -2
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/cluster_config.py +25 -4
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/common.py +18 -5
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/constants.py +3 -29
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/cluster.py +11 -4
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/cluster_resources.py +21 -0
- aws_parallelcluster-3.16.2/src/pcluster/models/common.py +567 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/imagebuilder.py +8 -4
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/imagebuilder/update_and_reboot.yaml +79 -8
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/cdk_builder_utils.py +2 -13
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/cluster_stack.py +31 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/imagebuilder_stack.py +1 -1
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/queues_stack.py +3 -6
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/utils.py +38 -2
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/cluster_validators.py +32 -2
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/common.py +3 -1
- aws_parallelcluster-3.16.0/src/pcluster/models/common.py +0 -326
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/MANIFEST.in +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/README +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/setup.cfg +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/SOURCES.txt +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/dependency_links.txt +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/entry_points.txt +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/not-zip-safe +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/requires.txt +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/top_level.txt +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/awslambda/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/awslambda/entrypoint.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/awslambda/serverless_wsgi.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/cluster_compute_fleet_controller.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/cluster_instances_controller.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/cluster_logs_controller.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/cluster_operations_controller.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/common.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/image_logs_controller.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/controllers/image_operations_controller.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/converters.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/encoder.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/errors.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/flask_app.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/ami_info.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/bad_request_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/base_model_.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/build_image_bad_request_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/build_image_request_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/build_image_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/change.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cloud_formation_resource_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cloud_formation_stack_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cluster_configuration_structure.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cluster_info_summary.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cluster_instance.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cluster_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/cluster_status_filtering_option.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/compute_fleet_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/config_validation_message.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/conflict_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/create_cluster_bad_request_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/create_cluster_request_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/create_cluster_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/delete_cluster_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/delete_image_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/describe_cluster_instances_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/describe_cluster_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/describe_compute_fleet_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/describe_image_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/dryrun_operation_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/ec2_ami_info.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/ec2_ami_info_summary.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/ec2_ami_state.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/ec2_instance.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/failure.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/get_cluster_log_events_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/get_cluster_stack_events_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/get_image_log_events_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/get_image_stack_events_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/image_build_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/image_builder_image_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/image_configuration_structure.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/image_info_summary.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/image_status_filtering_option.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/instance_state.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/internal_service_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/limit_exceeded_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/list_cluster_log_streams_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/list_clusters_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/list_image_log_streams_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/list_images_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/list_official_images_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/log_event.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/log_stream.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/login_nodes_pool.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/login_nodes_state.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/metadata.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/node_type.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/not_found_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/requested_compute_fleet_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/scheduler.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/stack_event.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/tag.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/unauthorized_client_error_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/update_cluster_bad_request_exception_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/update_cluster_request_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/update_cluster_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/update_compute_fleet_request_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/update_compute_fleet_response_content.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/update_error.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/models/validation_level.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/openapi/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/typing_utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/api/util.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/aws_api.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/cfn.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/common.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/dynamo.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/ec2.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/efs.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/elb.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/fsx.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/iam.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/imagebuilder.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/kms.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/resource_groups.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/resource_groups_tagging_api.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/route53.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/s3.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/s3_resource.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/secretsmanager.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/ssm.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/aws/sts.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/cluster_logs.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/commands.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/common.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/configure/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/configure/command.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/configure/easyconfig.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/configure/networking.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/configure/subnet_computation.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/configure/utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/dcv_connect.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/dcv_util.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/image_logs.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/ssh.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/commands/version.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/entrypoint.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/exceptions.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/logger.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/middleware.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/cli/model.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/config_patch.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/imagebuilder_config.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/update_policy.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/update_policy_utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/imagebuilder_utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/launch_template_utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/lib/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/lib/lib.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/compute_fleet_status_manager.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/imagebuilder_resources.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/login_nodes_status.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/s3_bucket.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/networking/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/networking/vpc_factory.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/alinux2/Dockerfile +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/alinux2023/Dockerfile +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/build-docker-images.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/buildspec.yml +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/scripts/entrypoint.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/scripts/generate_hostfile.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/scripts/modify_yum_vars.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/scripts/mount_efs.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/scripts/mount_nfs.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/batch/docker/upload-docker-images.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/compute_node/user_data.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/cleanup_resources.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/crhelper/LICENSE +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/crhelper/NOTICE +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/crhelper/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/crhelper/log_helper.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/crhelper/resource_helper.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/crhelper/utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/delete_image_stack.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/manage_docker_images.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/custom_resources/custom_resources_code/send_build_notification.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/head_node/user_data.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/imagebuilder/custom_script.yaml +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/imagebuilder/parallelcluster.yaml +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/imagebuilder/parallelcluster_tag.yaml +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/imagebuilder/parallelcluster_test.yaml +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/login_node/user_data.sh +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/resources/supported-regions +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/schemas/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/schemas/cluster_schema.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/schemas/common_schema.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/schemas/imagebuilder_schema.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/cdk_artifacts_manager.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/cdk_builder.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/compute_fleet_stack.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/cw_dashboard_builder.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/import_cdk.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/login_nodes_stack.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/templates/slurm_builder.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/database_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/dev_settings_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/directory_service_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/ebs_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/ec2_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/efs_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/feature_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/fsx_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/iam_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/imagebuilder_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/instances_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/kms_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/monitoring_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/networking_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/s3_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/secret_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/slurm_settings_validator.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/tags_validators.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/validators/utils.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster3_config_converter/__init__.py +0 -0
- {aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster3_config_converter/pcluster3_config_converter.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-parallelcluster
|
|
3
|
-
Version: 3.16.
|
|
3
|
+
Version: 3.16.2
|
|
4
4
|
Summary: AWS ParallelCluster is an AWS supported Open Source cluster management tool to deploy and manage HPC clusters in the AWS cloud.
|
|
5
5
|
Home-page: https://github.com/aws/aws-parallelcluster
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
21
|
Classifier: Topic :: Scientific/Engineering
|
|
21
22
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
22
23
|
Requires-Python: >=3.9
|
|
@@ -20,7 +20,7 @@ def readme():
|
|
|
20
20
|
return f.read()
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
VERSION = "3.16.
|
|
23
|
+
VERSION = "3.16.2"
|
|
24
24
|
CDK_VERSION = "1.164"
|
|
25
25
|
REQUIRES = [
|
|
26
26
|
"setuptools",
|
|
@@ -93,6 +93,7 @@ setup(
|
|
|
93
93
|
"Programming Language :: Python :: 3.11",
|
|
94
94
|
"Programming Language :: Python :: 3.12",
|
|
95
95
|
"Programming Language :: Python :: 3.13",
|
|
96
|
+
"Programming Language :: Python :: 3.14",
|
|
96
97
|
"Topic :: Scientific/Engineering",
|
|
97
98
|
"License :: OSI Approved :: Apache Software License",
|
|
98
99
|
],
|
{aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/aws_parallelcluster.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-parallelcluster
|
|
3
|
-
Version: 3.16.
|
|
3
|
+
Version: 3.16.2
|
|
4
4
|
Summary: AWS ParallelCluster is an AWS supported Open Source cluster management tool to deploy and manage HPC clusters in the AWS cloud.
|
|
5
5
|
Home-page: https://github.com/aws/aws-parallelcluster
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
21
|
Classifier: Topic :: Scientific/Engineering
|
|
21
22
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
22
23
|
Requires-Python: >=3.9
|
|
@@ -391,7 +391,7 @@ class FsxStorageInfo:
|
|
|
391
391
|
@property
|
|
392
392
|
def network_interface_ids(self):
|
|
393
393
|
"""Return network interface ids of the file system."""
|
|
394
|
-
return self.file_storage_info.get("NetworkInterfaceIds")
|
|
394
|
+
return self.file_storage_info.get("NetworkInterfaceIds", [])
|
|
395
395
|
|
|
396
396
|
@property
|
|
397
397
|
def subnet_ids(self):
|
|
@@ -49,7 +49,7 @@ class LogsClient(Boto3Client):
|
|
|
49
49
|
|
|
50
50
|
@AWSExceptionHandler.handle_client_exception
|
|
51
51
|
def filter_log_events(self, log_group_name, start_time=None, end_time=None, log_stream_name_prefix=None):
|
|
52
|
-
"""Return the
|
|
52
|
+
"""Return the FilterLogEvents response for a specific time window for a given group name."""
|
|
53
53
|
kwargs = {"logGroupName": log_group_name, "limit": 1}
|
|
54
54
|
if start_time:
|
|
55
55
|
kwargs["startTime"] = start_time
|
|
@@ -57,7 +57,7 @@ class LogsClient(Boto3Client):
|
|
|
57
57
|
kwargs["endTime"] = end_time
|
|
58
58
|
if log_stream_name_prefix:
|
|
59
59
|
kwargs["logStreamNamePrefix"] = log_stream_name_prefix
|
|
60
|
-
return self._client.filter_log_events(**kwargs)
|
|
60
|
+
return self._client.filter_log_events(**kwargs)
|
|
61
61
|
|
|
62
62
|
@AWSExceptionHandler.handle_client_exception
|
|
63
63
|
def get_log_events(
|
|
@@ -121,6 +121,28 @@ class LogsClient(Boto3Client):
|
|
|
121
121
|
)
|
|
122
122
|
return tasks[0].get("status").get("code")
|
|
123
123
|
|
|
124
|
+
@AWSExceptionHandler.handle_client_exception
|
|
125
|
+
def get_active_export_tasks(self):
|
|
126
|
+
"""Return the CloudWatch Logs export tasks that are currently active (PENDING or RUNNING).
|
|
127
|
+
|
|
128
|
+
CloudWatch Logs allows only one active export task per account at a time, so this is used to give
|
|
129
|
+
a clear "an export is already running, please wait" message instead of a raw LimitExceededException
|
|
130
|
+
when a second export is attempted (e.g. after the user interrupts and reruns the command).
|
|
131
|
+
"""
|
|
132
|
+
active_tasks = []
|
|
133
|
+
for status_code in ("PENDING", "PENDING_CANCEL", "RUNNING"):
|
|
134
|
+
next_token = None
|
|
135
|
+
while True:
|
|
136
|
+
kwargs = {"statusCode": status_code}
|
|
137
|
+
if next_token:
|
|
138
|
+
kwargs["nextToken"] = next_token
|
|
139
|
+
response = self._client.describe_export_tasks(**kwargs)
|
|
140
|
+
active_tasks.extend(response.get("exportTasks", []))
|
|
141
|
+
next_token = response.get("nextToken")
|
|
142
|
+
if not next_token:
|
|
143
|
+
break
|
|
144
|
+
return active_tasks
|
|
145
|
+
|
|
124
146
|
@AWSExceptionHandler.handle_client_exception
|
|
125
147
|
def describe_log_streams(self, log_group_name, log_stream_name_prefix=None, next_token=None):
|
|
126
148
|
"""Return a list of log streams in the given log group, filtered by the given prefix."""
|
{aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/config/cluster_config.py
RENAMED
|
@@ -30,10 +30,7 @@ from pcluster.config.common import (
|
|
|
30
30
|
DefaultUserHomeType,
|
|
31
31
|
)
|
|
32
32
|
from pcluster.config.common import Imds as TopLevelImds
|
|
33
|
-
from pcluster.config.common import
|
|
34
|
-
Resource,
|
|
35
|
-
SharedStorageType,
|
|
36
|
-
)
|
|
33
|
+
from pcluster.config.common import Resource, SharedStorageType
|
|
37
34
|
from pcluster.constants import (
|
|
38
35
|
CIDR_ALL_IPS,
|
|
39
36
|
COMPUTE_INSTANCE_INFO_TIMEOUT,
|
|
@@ -67,6 +64,7 @@ from pcluster.constants import (
|
|
|
67
64
|
Feature,
|
|
68
65
|
)
|
|
69
66
|
from pcluster.utils import (
|
|
67
|
+
create_hash_suffix,
|
|
70
68
|
get_attr,
|
|
71
69
|
get_partition,
|
|
72
70
|
get_resource_name_from_resource_arn,
|
|
@@ -96,6 +94,7 @@ from pcluster.validators.cluster_validators import (
|
|
|
96
94
|
InstanceArchitectureCompatibilityValidator,
|
|
97
95
|
IntelHpcArchitectureValidator,
|
|
98
96
|
IntelHpcOsValidator,
|
|
97
|
+
ManagedFsxCrossAzValidator,
|
|
99
98
|
ManagedFsxMultiAzValidator,
|
|
100
99
|
MaxCountValidator,
|
|
101
100
|
MixedSecurityGroupOverwriteValidator,
|
|
@@ -1622,6 +1621,16 @@ class BaseClusterConfig(Resource):
|
|
|
1622
1621
|
self.deployment_settings = deployment_settings
|
|
1623
1622
|
self.managed_head_node_security_group = None
|
|
1624
1623
|
self.managed_compute_security_group = None
|
|
1624
|
+
# Dictionary {mount target logical id: subnet id} with an entry for each EFS mount target of the deployed stack,
|
|
1625
|
+
# e.g. {"EFS2395b171bc347024MTuswest2a": "subnet-12345678"}.
|
|
1626
|
+
# It is set during update to keep each mount target in its current subnet: EFS allows a single mount target
|
|
1627
|
+
# per AZ, so moving a mount target to another subnet of the same AZ would make the stack update fail.
|
|
1628
|
+
self.existing_efs_mount_target_subnets = {}
|
|
1629
|
+
# Dictionary {file system logical id: subnet ids} with an entry for each FSx file system of the deployed stack,
|
|
1630
|
+
# e.g. {"FSX3c9d7e6a8c2b1f05": ["subnet-12345678"]}.
|
|
1631
|
+
# It is set during update to keep each managed FSx in its current subnet: changing the subnet of an FSx
|
|
1632
|
+
# replaces the file system, deleting the existing one and its data.
|
|
1633
|
+
self.existing_fsx_file_system_subnets = {}
|
|
1625
1634
|
self.instance_types_data_version = ""
|
|
1626
1635
|
|
|
1627
1636
|
def _register_validators(self, context: ValidatorContext = None): # noqa: D102 #pylint: disable=unused-argument
|
|
@@ -1800,6 +1809,18 @@ class BaseClusterConfig(Resource):
|
|
|
1800
1809
|
queues=queues,
|
|
1801
1810
|
fsx_az_list=storage.file_system_availability_zones,
|
|
1802
1811
|
)
|
|
1812
|
+
if isinstance(storage, SharedFsxLustre) and not storage.is_unmanaged:
|
|
1813
|
+
# During update, the existing file system is kept in its subnets, see existing_fsx_file_system_subnets
|
|
1814
|
+
existing_subnet_ids = self.existing_fsx_file_system_subnets.get(
|
|
1815
|
+
f"{SharedStorageType.FSX.name}{create_hash_suffix(storage.name)}"
|
|
1816
|
+
)
|
|
1817
|
+
if existing_subnet_ids:
|
|
1818
|
+
self._register_validator(
|
|
1819
|
+
ManagedFsxCrossAzValidator,
|
|
1820
|
+
fsx_name=storage.name,
|
|
1821
|
+
fsx_subnet_ids=existing_subnet_ids,
|
|
1822
|
+
compute_subnet_ids=compute_subnet_ids,
|
|
1823
|
+
)
|
|
1803
1824
|
if isinstance(storage, SharedEbs):
|
|
1804
1825
|
ebs_volumes.append(storage)
|
|
1805
1826
|
|
|
@@ -20,6 +20,7 @@ from abc import ABC, abstractmethod
|
|
|
20
20
|
from enum import Enum
|
|
21
21
|
from typing import List, Set
|
|
22
22
|
|
|
23
|
+
from pcluster.utils import event_loop
|
|
23
24
|
from pcluster.validators.common import AsyncValidator, FailureLevel, ValidationResult, Validator, ValidatorContext
|
|
24
25
|
from pcluster.validators.dev_settings_validators import ExtraChefAttributesValidator
|
|
25
26
|
from pcluster.validators.iam_validators import AdditionalIamPolicyValidator
|
|
@@ -208,11 +209,9 @@ class Resource:
|
|
|
208
209
|
# if they are taking too long to execute for a resource and its children since the use of
|
|
209
210
|
# get_async_timed_validator_type_for allows to decorate only on single validator at a time and
|
|
210
211
|
# does not cascade to child resources
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
)
|
|
215
|
-
)
|
|
212
|
+
with event_loop() as loop:
|
|
213
|
+
validation_results = loop.run_until_complete(asyncio.gather(*self._validation_futures))
|
|
214
|
+
return list(itertools.chain.from_iterable(validation_results))
|
|
216
215
|
|
|
217
216
|
def _nested_resources(self):
|
|
218
217
|
nested_resources = []
|
|
@@ -312,6 +311,20 @@ class BaseTag(Resource):
|
|
|
312
311
|
self.value = Resource.init_param(value)
|
|
313
312
|
|
|
314
313
|
|
|
314
|
+
def merge_tags(*tag_lists):
|
|
315
|
+
"""
|
|
316
|
+
Merge lists of Tag objects, deduplicating by key.
|
|
317
|
+
|
|
318
|
+
Later lists take precedence over earlier ones on duplicate keys, mirroring the tag precedence
|
|
319
|
+
applied at launch time (cluster < queue < compute resource). ``None`` lists are skipped.
|
|
320
|
+
"""
|
|
321
|
+
merged = {}
|
|
322
|
+
for tags in tag_lists:
|
|
323
|
+
for tag in tags or []:
|
|
324
|
+
merged[tag.key] = tag
|
|
325
|
+
return list(merged.values())
|
|
326
|
+
|
|
327
|
+
|
|
315
328
|
class AdditionalIamPolicy(Resource):
|
|
316
329
|
"""Represent the Additional IAM Policy configuration."""
|
|
317
330
|
|
|
@@ -39,7 +39,6 @@ SUPPORTED_OSES_FOR_P6E_GB200 = list(set(SUPPORTED_OSES) - set(UNSUPPORTED_OSES_F
|
|
|
39
39
|
UNSUPPORTED_OSES_FOR_P6_B300 = []
|
|
40
40
|
SUPPORTED_OSES_FOR_P6_B300 = list(set(SUPPORTED_OSES) - set(UNSUPPORTED_OSES_FOR_P6_B300))
|
|
41
41
|
UNSUPPORTED_OSES_FOR_DCV = []
|
|
42
|
-
UNSUPPORTED_OSES_FOR_NON_GPU_DCV = ["rocky9", "rhel9"]
|
|
43
42
|
UNSUPPORTED_ARM_OSES_FOR_DCV = []
|
|
44
43
|
UNSUPPORTED_OSES_FOR_LUSTRE = []
|
|
45
44
|
DELETE_POLICY = "Delete"
|
|
@@ -135,7 +134,7 @@ EBS_VOLUME_TYPE_IOPS_DEFAULT = {
|
|
|
135
134
|
}
|
|
136
135
|
EBS_VOLUME_SIZE_DEFAULT = 40
|
|
137
136
|
# This value must be greater than or equal to the AMI volume size
|
|
138
|
-
EBS_ROOT_VOLUME_SIZE_DEFAULT =
|
|
137
|
+
EBS_ROOT_VOLUME_SIZE_DEFAULT = 50
|
|
139
138
|
EBS_VOLUME_TYPE_DEFAULT = "gp3"
|
|
140
139
|
|
|
141
140
|
DEFAULT_MAX_COUNT = 10
|
|
@@ -156,8 +155,8 @@ MAX_NEW_STORAGE_COUNT = {"efs": 1, "fsx": 1, "raid": 1}
|
|
|
156
155
|
MAX_EXISTING_STORAGE_COUNT = {"efs": 20, "fsx": 20, "raid": 0}
|
|
157
156
|
|
|
158
157
|
COOKBOOK_PACKAGES_VERSIONS = {
|
|
159
|
-
"parallelcluster": "3.16.
|
|
160
|
-
"cookbook": "aws-parallelcluster-cookbook-3.16.
|
|
158
|
+
"parallelcluster": "3.16.2",
|
|
159
|
+
"cookbook": "aws-parallelcluster-cookbook-3.16.2",
|
|
161
160
|
"chef": "19.3.14",
|
|
162
161
|
"ami": "dev",
|
|
163
162
|
}
|
|
@@ -362,28 +361,3 @@ ULTRASERVER_CAPACITY_BLOCK_ALLOWED_SIZE_DICT = {
|
|
|
362
361
|
}
|
|
363
362
|
# Capacity Block states that are considered inactive (cannot check health status)
|
|
364
363
|
CAPACITY_BLOCK_INACTIVE_STATES = ["scheduled", "payment-pending", "assessing", "delayed"]
|
|
365
|
-
|
|
366
|
-
# Older generation instance types
|
|
367
|
-
EXCLUDED_INSTANCE_TYPE_PREFIXES = (
|
|
368
|
-
"m1",
|
|
369
|
-
"m2",
|
|
370
|
-
"m3",
|
|
371
|
-
"m4",
|
|
372
|
-
"t1",
|
|
373
|
-
"t2",
|
|
374
|
-
"c1",
|
|
375
|
-
"c3",
|
|
376
|
-
"c4",
|
|
377
|
-
"r3",
|
|
378
|
-
"r4",
|
|
379
|
-
"x1",
|
|
380
|
-
"x1e",
|
|
381
|
-
"d2",
|
|
382
|
-
"h1",
|
|
383
|
-
"i2",
|
|
384
|
-
"i3",
|
|
385
|
-
"f1",
|
|
386
|
-
"g3",
|
|
387
|
-
"p2",
|
|
388
|
-
"p3",
|
|
389
|
-
)
|
|
@@ -55,6 +55,7 @@ from pcluster.models.common import (
|
|
|
55
55
|
create_logs_archive,
|
|
56
56
|
export_stack_events,
|
|
57
57
|
parse_config,
|
|
58
|
+
sanitize_path_component,
|
|
58
59
|
upload_archive,
|
|
59
60
|
)
|
|
60
61
|
from pcluster.models.compute_fleet_status_manager import ComputeFleetStatus, ComputeFleetStatusManager
|
|
@@ -487,6 +488,8 @@ class Cluster:
|
|
|
487
488
|
if context.during_update:
|
|
488
489
|
config.managed_head_node_security_group = self.stack.get_resource_physical_id("HeadNodeSecurityGroup")
|
|
489
490
|
config.managed_compute_security_group = self.stack.get_resource_physical_id("ComputeSecurityGroup")
|
|
491
|
+
config.existing_efs_mount_target_subnets = self.stack.efs_mount_target_subnets
|
|
492
|
+
config.existing_fsx_file_system_subnets = self.stack.fsx_file_system_subnets
|
|
490
493
|
|
|
491
494
|
validation_failures = config.validate(validator_suppressors, context)
|
|
492
495
|
if any(f.level.value >= FailureLevel(validation_failure_level).value for f in validation_failures):
|
|
@@ -970,8 +973,9 @@ class Cluster:
|
|
|
970
973
|
|
|
971
974
|
try:
|
|
972
975
|
with tempfile.TemporaryDirectory() as output_tempdir:
|
|
973
|
-
# Create root folder for the archive
|
|
974
|
-
|
|
976
|
+
# Create root folder for the archive. Sanitize the identifier: it may be an ARN (deleted
|
|
977
|
+
# clusters can only be referenced by ARN), whose '/' and ':' would break local paths.
|
|
978
|
+
archive_name = f"{sanitize_path_component(self.name)}-logs-{datetime.now().strftime('%Y%m%d%H%M')}"
|
|
975
979
|
root_archive_dir = os.path.join(output_tempdir, archive_name)
|
|
976
980
|
os.makedirs(root_archive_dir, exist_ok=True)
|
|
977
981
|
|
|
@@ -997,8 +1001,11 @@ class Cluster:
|
|
|
997
1001
|
{self.name},
|
|
998
1002
|
)
|
|
999
1003
|
|
|
1000
|
-
# Get stack events and write them into a file
|
|
1001
|
-
|
|
1004
|
+
# Get stack events and write them into a file (sanitize: the stream name embeds the
|
|
1005
|
+
# stack identifier, which may be an ARN containing path separators).
|
|
1006
|
+
stack_events_file = os.path.join(
|
|
1007
|
+
root_archive_dir, sanitize_path_component(self._stack_events_stream_name)
|
|
1008
|
+
)
|
|
1002
1009
|
export_stack_events(self.stack_name, stack_events_file)
|
|
1003
1010
|
|
|
1004
1011
|
archive_path = create_logs_archive(root_archive_dir, output_file)
|
{aws_parallelcluster-3.16.0 → aws_parallelcluster-3.16.2}/src/pcluster/models/cluster_resources.py
RENAMED
|
@@ -18,6 +18,7 @@ from pcluster.aws.aws_api import AWSApi
|
|
|
18
18
|
from pcluster.aws.aws_resources import InstanceInfo, StackInfo
|
|
19
19
|
from pcluster.constants import CW_LOGS_CFN_PARAM_NAME, OS_MAPPING, PCLUSTER_NODE_TYPE_TAG, PCLUSTER_VERSION_TAG
|
|
20
20
|
from pcluster.models.common import FiltersParserError, LogGroupTimeFiltersParser, get_all_stack_events
|
|
21
|
+
from pcluster.utils import yaml_load
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
class ClusterStack(StackInfo):
|
|
@@ -72,6 +73,26 @@ class ClusterStack(StackInfo):
|
|
|
72
73
|
"""Return the original official AMI."""
|
|
73
74
|
return self._get_param("OfficialAmi")
|
|
74
75
|
|
|
76
|
+
@property
|
|
77
|
+
def efs_mount_target_subnets(self):
|
|
78
|
+
"""Return the subnet of each EFS mount target in the stack template, keyed by the mount target logical id."""
|
|
79
|
+
resources = yaml_load(AWSApi.instance().cfn.get_stack_template(self.name)).get("Resources", {})
|
|
80
|
+
return {
|
|
81
|
+
logical_id: resource["Properties"]["SubnetId"]
|
|
82
|
+
for logical_id, resource in resources.items()
|
|
83
|
+
if resource.get("Type") == "AWS::EFS::MountTarget"
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def fsx_file_system_subnets(self):
|
|
88
|
+
"""Return the subnets of each FSx file system in the stack template, keyed by the file system logical id."""
|
|
89
|
+
resources = yaml_load(AWSApi.instance().cfn.get_stack_template(self.name)).get("Resources", {})
|
|
90
|
+
return {
|
|
91
|
+
logical_id: resource["Properties"]["SubnetIds"]
|
|
92
|
+
for logical_id, resource in resources.items()
|
|
93
|
+
if resource.get("Type") == "AWS::FSx::FileSystem"
|
|
94
|
+
}
|
|
95
|
+
|
|
75
96
|
def delete(self):
|
|
76
97
|
"""Delete stack."""
|
|
77
98
|
AWSApi.instance().cfn.delete_stack(self.name)
|