Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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")