def test_execute(self, mocker): response_dict = { "cluster": { "clusterName": "cluster", "cloudformationStackStatus": "DELETE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-2:000000000000:stack/cluster/aa", "region": "eu-west-1", "version": "3.0.0", "clusterStatus": "DELETE_IN_PROGRESS", } } response = DeleteClusterResponseContent().from_dict(response_dict) delete_cluster_mock = mocker.patch( "pcluster.api.controllers.cluster_operations_controller.delete_cluster", return_value=response, autospec=True, ) out = run(["delete-cluster", "--cluster-name", "cluster"]) expected = wire_translate(response) assert_that(out).is_equal_to(expected) assert_that(delete_cluster_mock.call_args).is_length(2) args_expected = {"region": None, "cluster_name": "cluster"} delete_cluster_mock.assert_called_with(**args_expected)
def test_execute(self, mocker): response_dict = { "status": "START_REQUESTED", "lastStatusUpdatedTime": "2021-01-01 00:00:00.000000+00:00" } response = UpdateComputeFleetResponseContent().from_dict(response_dict) update_compute_fleet_status_mock = mocker.patch( "pcluster.api.controllers.cluster_compute_fleet_controller.update_compute_fleet", return_value=response, autospec=True, ) out = run([ "update-compute-fleet", "--cluster-name", "cluster", "--status", "START_REQUESTED", ]) assert_that(out).is_equal_to(wire_translate(response)) assert_that(update_compute_fleet_status_mock.call_args).is_length( 2) # this is due to the decorator on list_clusters expected_args = { "region": None, "cluster_name": "cluster", "update_compute_fleet_request_content": { "status": "START_REQUESTED" }, } update_compute_fleet_status_mock.assert_called_with(**expected_args)
def test_execute(self, mocker): response_dict = { "imageConfiguration": { "url": "s3://parallelcluster-0000000000000000-v1-do-not-delete/parallelcluster/3.0.0/config.yaml" }, "imageId": "aws-parallelcluster-3-0-0-ubuntu-1804-lts-hvm-arm64-202101010000", "creationTime": "2021-01-01T00:00:00.000Z", "imageBuildStatus": "BUILD_COMPLETE", "region": "eu-west-2", "ec2AmiInfo": { "amiName": "aws-parallelcluster-3.0.0-ubuntu-1804-lts-hvm-x86_64-202101010000 2021-01-01T00-00-00.000Z", "amiId": "ami-FEED0DEAD0BEEF000", "description": "AWS ParallelCluster AMI for ubuntu1804", "state": "AVAILABLE", "tags": [ {"key": "parallelcluster:lustre_version", "value": "5.4.0.1051.33"}, {"key": "parallelcluster:bootstrap_file", "value": "aws-parallelcluster-cookbook-3.0.0"}, ], "architecture": "x86_64", }, "version": "3.0.0", } response = DescribeImageResponseContent().from_dict(response_dict) describe_image_mock = mocker.patch( "pcluster.api.controllers.image_operations_controller.describe_image", return_value=response, autospec=True ) out = run(["describe-image", "--image-id", "image"]) assert_that(out).is_equal_to(wire_translate(response)) assert_that(describe_image_mock.call_args).is_length(2) # this is due to the decorator on list_clusters expected_args = {"region": None, "image_id": "image"} describe_image_mock.assert_called_with(**expected_args)
def test_execute(self, mocker): response_dict = {"lastStatusUpdatedTime": "2021-01-01 00:00:00.000000+00:00", "status": "RUNNING"} response = DescribeComputeFleetResponseContent().from_dict(response_dict) describe_clusters_mock = mocker.patch( "pcluster.api.controllers.cluster_compute_fleet_controller.describe_compute_fleet", return_value=response, autospec=True, ) out = run(["describe-compute-fleet", "--cluster-name", "cluster"]) assert_that(out).is_equal_to(wire_translate(response)) assert_that(describe_clusters_mock.call_args).is_length(2) # this is due to the decorator on list_clusters expected_args = {"region": None, "cluster_name": "cluster"} describe_clusters_mock.assert_called_with(**expected_args)
def test_execute(self, mocker): response_dict = { "creationTime": "2021-01-01 00:00:00.000000+00:00", "headnode": { "launchTime": "2021-01-01T00:00:00+00:00", "instanceId": "i-099aaaaa7000ccccc", "publicIpAddress": "18.118.18.18", "instanceType": "t2.micro", "state": "running", "privateIpAddress": "10.0.0.32", }, "version": "3.0.0", "clusterConfiguration": { "url": ("https://parallelcluster-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.0.0/clusters/cluster/" "configs/cluster-config.yaml") }, "tags": [{ "value": "3.0.0", "key": "parallelcluster:version" }], "cloudFormationStackStatus": "CREATE_COMPLETE", "clusterName": "cluster", "computeFleetStatus": "RUNNING", "cloudformationStackArn": "arn:aws:cloudformation:us-east-2:000000000000:stack/name/0", "lastUpdatedTime": "2021-01-01 00:00:00.000000+00:00", "region": "us-west-2", "clusterStatus": "CREATE_COMPLETE", } response = DescribeClusterResponseContent().from_dict(response_dict) describe_clusters_mock = mocker.patch( "pcluster.api.controllers.cluster_operations_controller.describe_cluster", return_value=response, autospec=True, ) out = run(["describe-cluster", "--cluster-name", "cluster"]) expected = wire_translate(response) assert_that(out).is_equal_to(expected) assert_that(describe_clusters_mock.call_args).is_length( 2) # this is due to the decorator on list_clusters expected_args = {"region": None, "cluster_name": "cluster"} describe_clusters_mock.assert_called_with(**expected_args)
def test_execute_with_wait(self, mocker, test_datadir): response_dict = { "cluster": { "clusterName": "cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-2:000000000000:stack/cluster/aa", "region": "eu-west-1", "version": "3.0.0", "clusterStatus": "CREATE_IN_PROGRESS", } } status_response_dict = { "creationTime": "2021-01-01 00:00:00.000000+00:00", "headNode": { "launchTime": "2021-01-01T00:00:00+00:00", "instanceId": "i-099aaaaa7000ccccc", "publicIpAddress": "18.118.18.18", "instanceType": "t2.micro", "state": "running", "privateIpAddress": "10.0.0.32", }, "version": "3.0.0", "clusterConfiguration": { "url": ("https://parallelcluster-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.0.0/clusters/cluster/" "configs/cluster-config.yaml") }, "tags": [{ "value": "3.0.0", "key": "parallelcluster:version" }], "cloudFormationStackStatus": "CREATE_COMPLETE", "clusterName": "cluster", "computeFleetStatus": "RUNNING", "cloudformationStackArn": "arn:aws:cloudformation:us-east-2:000000000000:stack/name/0", "lastUpdatedTime": "2021-01-01 00:00:00.000000+00:00", "region": "us-west-2", "clusterStatus": "CREATE_COMPLETE", } create_response = CreateClusterResponseContent().from_dict( response_dict) create_cluster_mock = mocker.patch( "pcluster.api.controllers.cluster_operations_controller.create_cluster", return_value=create_response, autospec=True, ) response = DescribeClusterResponseContent().from_dict( status_response_dict) describe_cluster_mock = mocker.patch( "pcluster.api.controllers.cluster_operations_controller.describe_cluster", return_value=response) cf_waiter_mock = mocker.patch("botocore.waiter.Waiter.wait") mock_aws_api(mocker) path = str(test_datadir / "config.yaml") command = [ "create-cluster", "-n", "cluster", "-c", path, "-r", "eu-west-1", "--wait" ] out = run(command) expected = wire_translate(response) assert_that(out).is_equal_to(expected) assert_that(create_cluster_mock.call_args).is_length(2) expected_args = { "suppress_validators": None, "validation_failure_level": None, "dryrun": None, "rollback_on_failure": None, "region": "eu-west-1", "create_cluster_request_content": { "clusterName": "cluster", "clusterConfiguration": "" }, } create_cluster_mock.assert_called_with(**expected_args) assert_that(cf_waiter_mock.call_args[1]).is_equal_to( {"StackName": "cluster"}) describe_cluster_mock.assert_called_with(cluster_name="cluster")