예제 #1
0
def test_attach_volume_asg_name(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    asg_names = ['AutoScalingGroup-A']
    client.describe_auto_scaling_groups.return_value = {
        "AutoScalingGroups": [{
            "AutoScalingGroupName":
            asg_names[0],
            "Instances": [{
                "InstanceId": "i-00000000000000001"
            }]
        }]
    }

    client.describe_volumes.return_value = {
        'Volumes': [{
            'VolumeId':
            'vol-00000001',
            'Tags': [{
                'Key':
                'ChaosToolkitDetached',
                'Value':
                'DeviceName=/dev/sdc;InstanceId=%s;ASG=%s' %
                ('i-987654321fabcde', asg_names[0])
            }]
        }, {
            'VolumeId':
            'vol-00000002',
            'Tags': [{
                'Key':
                'ChaosToolkitDetached',
                'Value':
                'DeviceName=/dev/sdb;InstanceId='
                'i-987654321fefghi'
            }]
        }]
    }

    client.attach_volume.return_value = {
        'DeviceName': '/dev/sdc',
        'InstanceId': 'i-987654321fabcde',
        'State': 'attaching',
        'VolumeId': 'vol-00000001'
    }

    results = attach_volume(asg_names=asg_names)

    client.describe_auto_scaling_groups.assert_called_with(
        AutoScalingGroupNames=asg_names)
    client.describe_volumes.assert_called_with(
        Filters={
            'Name': 'tag-key',
            'Values': ['ChaosToolkitDetached']
        })
    client.attach_volume.assert_called_with(Device='/dev/sdc',
                                            InstanceId='i-987654321fabcde',
                                            VolumeId='vol-00000001')
    assert results[0]['DeviceName'] == '/dev/sdc'
def test_attach_volume_asg_name(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    asg_names = ["AutoScalingGroup-A"]
    client.describe_auto_scaling_groups.return_value = {
        "AutoScalingGroups": [{
            "AutoScalingGroupName":
            asg_names[0],
            "Instances": [{
                "InstanceId": "i-00000000000000001"
            }],
        }]
    }

    client.describe_volumes.return_value = {
        "Volumes": [
            {
                "VolumeId":
                "vol-00000001",
                "Tags": [{
                    "Key":
                    "ChaosToolkitDetached",
                    "Value":
                    "DeviceName=/dev/sdc;InstanceId=%s;ASG=%s" %
                    ("i-987654321fabcde", asg_names[0]),
                }],
            },
            {
                "VolumeId":
                "vol-00000002",
                "Tags": [{
                    "Key":
                    "ChaosToolkitDetached",
                    "Value":
                    "DeviceName=/dev/sdb;InstanceId="
                    "i-987654321fefghi",
                }],
            },
        ]
    }

    client.attach_volume.return_value = {
        "DeviceName": "/dev/sdc",
        "InstanceId": "i-987654321fabcde",
        "State": "attaching",
        "VolumeId": "vol-00000001",
    }

    results = attach_volume(asg_names=asg_names)

    client.describe_auto_scaling_groups.assert_called_with(
        AutoScalingGroupNames=asg_names)
    client.describe_volumes.assert_called_with(
        Filters=[{
            "Name": "tag-key",
            "Values": ["ChaosToolkitDetached"]
        }])
    client.attach_volume.assert_called_with(Device="/dev/sdc",
                                            InstanceId="i-987654321fabcde",
                                            VolumeId="vol-00000001")
    assert results[0]["DeviceName"] == "/dev/sdc"
def test_attach_volume_asg_tags(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    asg_names = ["AutoScalingGroup-A"]
    tags = [{"Key": "TargetKey", "Value": "TargetValue"}]
    client.get_paginator.return_value.paginate.return_value = [{
        "Tags": [{
            "ResourceId": asg_names[0],
            "ResourceType": "auto-scaling-group",
            "Key": "TargetKey",
            "Value": "TargetValue",
            "PropagateAtLaunch": False,
        }]
    }]
    client.describe_auto_scaling_groups.return_value = {
        "AutoScalingGroups": [{
            "AutoScalingGroupName":
            asg_names[0],
            "Instances": [{
                "InstanceId": "i-00000000000000001"
            }],
        }]
    }

    client.describe_volumes.return_value = {
        "Volumes": [
            {
                "VolumeId":
                "vol-00000001",
                "Tags": [{
                    "Key":
                    "ChaosToolkitDetached",
                    "Value":
                    "DeviceName=/dev/sdb;InstanceId=%s;ASG=%s" %
                    ("i-00000000000000001", asg_names[0]),
                }],
            },
            {
                "VolumeId":
                "vol-00000002",
                "Tags": [{
                    "Key":
                    "ChaosToolkitDetached",
                    "Value":
                    "DeviceName=/dev/sdb;InstanceId="
                    "i-987654321fghij",
                }],
            },
        ]
    }

    client.attach_volume.return_value = {
        "DeviceName": "/dev/sdb",
        "InstanceId": "i-00000000000000001",
        "State": "attaching",
        "VolumeId": "vol-00000001",
    }

    results = attach_volume(tags=tags)

    client.describe_auto_scaling_groups.assert_called_with(
        AutoScalingGroupNames=asg_names)
    client.get_paginator.return_value.paginate.assert_called_with(Filters=[
        {
            "Name": "key",
            "Values": ["TargetKey"]
        },
        {
            "Name": "value",
            "Values": ["TargetValue"]
        },
    ])
    client.describe_volumes.assert_called_with(
        Filters=[{
            "Name": "tag-key",
            "Values": ["ChaosToolkitDetached"]
        }])
    client.attach_volume.assert_called_with(Device="/dev/sdb",
                                            InstanceId="i-00000000000000001",
                                            VolumeId="vol-00000001")
    assert results[0]["DeviceName"] == "/dev/sdb"
예제 #4
0
def test_attach_volume_asg_tags(aws_client):
    client = MagicMock()
    aws_client.return_value = client
    asg_names = ['AutoScalingGroup-A']
    tags = [{'Key': 'TargetKey', 'Value': 'TargetValue'}]
    client.get_paginator.return_value.paginate.return_value = [{
        'Tags': [{
            'ResourceId': asg_names[0],
            'ResourceType': 'auto-scaling-group',
            'Key': 'TargetKey',
            'Value': 'TargetValue',
            'PropagateAtLaunch': False
        }]
    }]
    client.describe_auto_scaling_groups.return_value = {
        "AutoScalingGroups": [{
            "AutoScalingGroupName":
            asg_names[0],
            "Instances": [{
                "InstanceId": "i-00000000000000001"
            }]
        }]
    }

    client.describe_volumes.return_value = {
        'Volumes': [{
            'VolumeId':
            'vol-00000001',
            'Tags': [{
                'Key':
                'ChaosToolkitDetached',
                'Value':
                'DeviceName=/dev/sdb;InstanceId=%s;ASG=%s' %
                ('i-00000000000000001', asg_names[0])
            }]
        }, {
            'VolumeId':
            'vol-00000002',
            'Tags': [{
                'Key':
                'ChaosToolkitDetached',
                'Value':
                'DeviceName=/dev/sdb;InstanceId='
                'i-987654321fghij'
            }]
        }]
    }

    client.attach_volume.return_value = {
        'DeviceName': '/dev/sdb',
        'InstanceId': 'i-00000000000000001',
        'State': 'attaching',
        'VolumeId': 'vol-00000001'
    }

    results = attach_volume(tags=tags)

    client.describe_auto_scaling_groups.assert_called_with(
        AutoScalingGroupNames=asg_names)
    client.get_paginator.return_value.paginate.assert_called_with(
        Filters=[{
            'Name': 'key',
            'Values': ['TargetKey']
        }, {
            'Name': 'value',
            'Values': ['TargetValue']
        }])
    client.describe_volumes.assert_called_with(
        Filters={
            'Name': 'tag-key',
            'Values': ['ChaosToolkitDetached']
        })
    client.attach_volume.assert_called_with(Device='/dev/sdb',
                                            InstanceId='i-00000000000000001',
                                            VolumeId='vol-00000001')
    assert results[0]['DeviceName'] == '/dev/sdb'