Ejemplo n.º 1
0
def test_config_loading(vm):
    """Test if usual config parameters are loaded via get_cloud_config_value()"""
    with patch("salt.cloud.clouds.hetzner._connect_client",
               return_value=MagicMock()) as client:
        with patch("salt.config.get_cloud_config_value",
                   return_value=MagicMock()) as cloud_config:
            hetzner.create(vm)

            config_values = {
                "automount",
                "datacenter",
                "image",
                "labels",
                "location",
                "name",
                "networks",
                "private_key",
                "size",
                "ssh_keys",
                "user_data",
                "volumes",
            }
            calls = set(
                map(lambda call: call[0][0], cloud_config.call_args_list))
            assert config_values.issubset(calls)
Ejemplo n.º 2
0
def test_create_networks(vm):
    """ Test the networks during the creation """
    vm["networks"] = ["a", "b"]

    with patch("salt.cloud.clouds.hetzner._connect_client",
               return_value=MagicMock()) as connect:
        connect.return_value.networks.get_all.return_value = ["a", "c"]

        hetzner.create(vm)
        args = connect.return_value.servers.create.call_args
        assert args.kwargs["networks"] == ["a"]

        vm["networks"] = ["a", "b", "c"]
        hetzner.create(vm)
        args = connect.return_value.servers.create.call_args
        assert args.kwargs["networks"] == ["a", "c"]
Ejemplo n.º 3
0
def test_create(images, sizes, vm):
    """ Test the overall creation and the required parameters """
    with patch("salt.cloud.clouds.hetzner._connect_client",
               return_value=MagicMock()) as connect:
        with patch("salt.cloud.clouds.hetzner.wait_until",
                   return_value=True) as wait:
            with pytest.raises(SaltCloudException):
                hetzner.create({})

            connect.return_value.server_types.get_by_name.return_value = None
            connect.return_value.images.get_by_name.return_value = None
            with pytest.raises(SaltCloudException):
                hetzner.create(vm)

            connect.return_value.server_types.get_by_name.return_value = ModelMock(
                sizes["cpx21"])
            with pytest.raises(SaltCloudException):
                hetzner.create(vm)

            connect.return_value.images.get_by_name.return_value = ModelMock(
                images["ubuntu-20.04"])

            assert hetzner.create(vm)["created"]
            connect.return_value.servers.create.assert_called_once()
            args = connect.return_value.servers.create.call_args
            assert args.kwargs["name"] == vm["name"]
            assert args.kwargs["server_type"] == sizes["cpx21"]
            assert args.kwargs["image"] == images["ubuntu-20.04"]
Ejemplo n.º 4
0
def test_ssh_keys(vm):
    """ Test the locations during the creation """
    vm["ssh_keys"] = ["me"]

    with patch("salt.cloud.clouds.hetzner._connect_client",
               return_value=MagicMock()) as connect:
        hetzner.create(vm)
        connect.return_value.ssh_keys.get_by_name.assert_called_once_with("me")

        # The ssh_keys should be passed to the create
        connect.return_value.ssh_keys.get_by_name.return_value = "me"
        hetzner.create(vm)
        args = connect.return_value.servers.create.call_args
        assert args.kwargs["ssh_keys"] == ["me"]

        # Invalid keys should be sorted out
        connect.return_value.ssh_keys.get_by_name.return_value = None
        hetzner.create(vm)
        args = connect.return_value.servers.create.call_args
        assert args.kwargs["ssh_keys"] == []
Ejemplo n.º 5
0
def test_create_datacenter(vm):
    """ Test the datacenters during the creation """
    vm["datacenter"] = "abc"

    with patch("salt.cloud.clouds.hetzner._connect_client",
               return_value=MagicMock()) as connect:
        hetzner.create(vm)
        connect.return_value.servers.create.assert_called_once()
        connect.return_value.datacenters.get_by_name.assert_called_once_with(
            "abc")

        # The datacenter should be passed to the create
        connect.return_value.datacenters.get_by_name.return_value = "abc"
        hetzner.create(vm)
        args = connect.return_value.servers.create.call_args
        assert args.kwargs["datacenter"] == "abc"

        # Stop if the datacenter is invalid
        connect.return_value.datacenters.get_by_name.return_value = None
        with pytest.raises(SaltCloudException):
            hetzner.create(vm)