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"
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'