def test_detach_random_volume_ec2_invalid_id(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    instance_ids = ['i-987654321fedcba']
    client.describe_instances.return_value = {'Reservations': []}

    with pytest.raises(FailedActivity) as x:
        detach_random_volume(instance_ids=instance_ids)
    assert "no instances found matching: {'InstanceIds': %s}" % (
        instance_ids) in str(x.value)
def test_detach_random_volume_ec2_invalid_filters(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    filters = [{
        'Name': 'block-device-mapping.device-name',
        'Values': ['/dev/sdb']
    }]
    client.describe_instances.return_value = {'Reservations': []}

    with pytest.raises(FailedActivity) as x:
        detach_random_volume(filters=filters)
    assert str(filters) in str(x.value)
示例#3
0
def test_detach_random_volume_ec2_invalid_filters(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    filters = [{
        "Name": "block-device-mapping.device-name",
        "Values": ["/dev/sdb"]
    }]
    client.describe_instances.return_value = {"Reservations": []}

    with pytest.raises(FailedActivity) as x:
        detach_random_volume(filters=filters)
    assert "block-device-mapping.device-name" in str(x.value)
    assert "/dev/sdb" in str(x.value)
示例#4
0
def test_detach_random_volume_ec2_filter(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    filters = [{
        'Name': 'block-device-mapping.device-name',
        'Values': ['/dev/sdb']}]
    client.describe_instances.return_value = {
        'Reservations': [{
            'Instances': [{
                'InstanceId': 'i-987654321fedcba',
                'BlockDeviceMappings': [
                    {
                        'DeviceName': '/dev/xvda',
                        'Ebs': {'VolumeId': 'vol-00000001'}
                    },
                    {
                        'DeviceName': '/dev/sdb',
                        'Ebs': {'VolumeId': 'vol-00000002'}
                    }]}]}]}
    client.detach_volume.return_value = {
        'Device': '/dev/sdb',
        'InstanceId': 'i-987654321fedcba',
        'State': 'detaching',
        'VolumeId': 'vol-00000002'}

    results = detach_random_volume(filters=filters)

    client.describe_instances.assert_called_with(
        Filters=filters)
    client.detach_volume.assert_called_with(
        Device='/dev/sdb',
        Force=True,
        InstanceId='i-987654321fedcba',
        VolumeId='vol-00000002')
    assert results[0]['Device'] == '/dev/sdb'
示例#5
0
def test_detach_random_volume_ec2_id(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    instance_ids = ['i-987654321fedcba']
    client.describe_instances.return_value = {
        'Reservations': [{
            'Instances': [{
                'InstanceId': 'i-987654321fedcba',
                'BlockDeviceMappings': [
                    {
                        'DeviceName': '/dev/xvda',
                        'Ebs': {'VolumeId': 'vol-00000001'}
                    },
                    {
                        'DeviceName': '/dev/sdc',
                        'Ebs': {'VolumeId': 'vol-00000002'}
                    }]}]}]}
    client.detach_volume.return_value = {
        'Device': '/dev/sdc',
        'InstanceId': 'i-987654321fedcba',
        'State': 'detaching',
        'VolumeId': 'vol-00000002'}

    results = detach_random_volume(instance_ids=instance_ids)

    client.describe_instances.assert_called_with(
        InstanceIds=['i-987654321fedcba'])
    client.detach_volume.assert_called_with(
        Device='/dev/sdc',
        Force=True,
        InstanceId='i-987654321fedcba',
        VolumeId='vol-00000002')
    assert results[0]['Device'] == '/dev/sdc'
示例#6
0
def test_detach_random_volume_ec2_filter(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    filters = [{
        "Name": "block-device-mapping.device-name",
        "Values": ["/dev/sdb"]
    }]
    client.describe_instances.return_value = {
        "Reservations": [{
            "Instances": [{
                "InstanceId":
                "i-987654321fedcba",
                "BlockDeviceMappings": [
                    {
                        "DeviceName": "/dev/xvda",
                        "Ebs": {
                            "VolumeId": "vol-00000001"
                        },
                    },
                    {
                        "DeviceName": "/dev/sdb",
                        "Ebs": {
                            "VolumeId": "vol-00000002"
                        },
                    },
                ],
            }]
        }]
    }
    client.detach_volume.return_value = {
        "Device": "/dev/sdb",
        "InstanceId": "i-987654321fedcba",
        "State": "detaching",
        "VolumeId": "vol-00000002",
    }

    results = detach_random_volume(filters=filters)

    client.describe_instances.assert_called_with(Filters=filters)
    client.detach_volume.assert_called_with(
        Device="/dev/sdb",
        Force=True,
        InstanceId="i-987654321fedcba",
        VolumeId="vol-00000002",
    )
    assert results[0]["Device"] == "/dev/sdb"