def test_terminate_spot_instances(aws_client): client = MagicMock() aws_client.return_value = client instance_ids = ['i-987654321fedcba', 'i-392024ac3252ecb'] spot_ids = ['sir-abcdef01', 'sir-fedcba10'] client.describe_instances.return_value = { 'Reservations': [{ 'Instances': [ { 'InstanceId': instance_ids[0], 'InstanceLifecycle': 'spot', 'SpotInstanceRequestId': spot_ids[0] }, { 'InstanceId': instance_ids[1], 'InstanceLifecycle': 'spot', 'SpotInstanceRequestId': spot_ids[1] }, ] }] } terminate_instances(instance_ids) client.cancel_spot_instance_requests.assert_called_with( SpotInstanceRequestIds=spot_ids) client.terminate_instances.assert_called_with(InstanceIds=instance_ids)
def test_terminate_instances_by_filters(aws_client): client = MagicMock() aws_client.return_value = client instance_ids = ['i-987654321fedcba', 'i-392024ac3252ecb'] client.describe_instances.return_value = { 'Reservations': [{'Instances': [ {'InstanceId': instance_ids[0], 'InstanceLifecycle': 'normal'}, {'InstanceId': instance_ids[1], 'InstanceLifecycle': 'normal'}, ]}]} filters = [ {'Name': 'instance-state-name', 'Values': ['running']}, {'Name': 'tag-value', 'Values': ['chaos-cluster']}, {'Name': 'tag-key', 'Values': ['kubernetes.io/cluster/chaos-cluster']}, {'Name': 'tag-value', 'Values': ['owned']}, {'Name': 'tag-key', 'Values': ['eksctl.cluster.k8s.io/v1alpha1/cluster-name']}, ] terminate_instances(filters=filters, az='us-west-2') called_filters = deepcopy(filters) called_filters.append( {'Name': 'availability-zone', 'Values': ['us-west-2']}) client.describe_instances.assert_called_with(Filters=called_filters) client.terminate_instances.assert_called_with(InstanceIds=instance_ids)
def test_terminate_spot_instances(aws_client): client = MagicMock() aws_client.return_value = client instance_ids = ["i-987654321fedcba", "i-392024ac3252ecb"] spot_ids = ["sir-abcdef01", "sir-fedcba10"] client.describe_instances.return_value = { "Reservations": [{ "Instances": [ { "InstanceId": instance_ids[0], "InstanceLifecycle": "spot", "SpotInstanceRequestId": spot_ids[0], }, { "InstanceId": instance_ids[1], "InstanceLifecycle": "spot", "SpotInstanceRequestId": spot_ids[1], }, ] }] } terminate_instances(instance_ids) client.cancel_spot_instance_requests.assert_called_with( SpotInstanceRequestIds=spot_ids) client.terminate_instances.assert_called_with(InstanceIds=instance_ids)
def test_terminate_normal_instances(aws_client): client = MagicMock() aws_client.return_value = client instance_ids = ['i-987654321fedcba', 'i-392024ac3252ecb'] client.describe_instances.return_value = { 'Reservations': [{'Instances': [ {'InstanceId': instance_ids[0], 'InstanceLifecycle': 'normal'}, {'InstanceId': instance_ids[1], 'InstanceLifecycle': 'normal'}, ]}]} terminate_instances(instance_ids) client.terminate_instances.assert_called_with(InstanceIds=instance_ids)
def test_terminate_instances_az_no_instances(aws_client): client = MagicMock() aws_client.return_value = client az = 'us-west-2' filters = [{'Name': 'availability-zone', 'Values': ['us-west-2']}] client.describe_instances.return_value = { 'Reservations': [{'Instances': []}]} with pytest.raises(FailedActivity) as x: terminate_instances(az=az) assert "No instances found matching filters: %s" % filters in str(x.value)
def test_terminate_instances_az_no_instances(aws_client): client = MagicMock() aws_client.return_value = client az = 'us-west-2' client.describe_instances.return_value = { 'Reservations': [{ 'Instances': [] }] } with pytest.raises(FailedActivity) as x: terminate_instances(az=az) assert 'No instances found matching filters: %s' % az
def test_terminate_instances_by_filters(aws_client): client = MagicMock() aws_client.return_value = client instance_ids = ["i-987654321fedcba", "i-392024ac3252ecb"] client.describe_instances.return_value = { "Reservations": [{ "Instances": [ { "InstanceId": instance_ids[0], "InstanceLifecycle": "normal" }, { "InstanceId": instance_ids[1], "InstanceLifecycle": "normal" }, ] }] } filters = [ { "Name": "instance-state-name", "Values": ["running"] }, { "Name": "tag-value", "Values": ["chaos-cluster"] }, { "Name": "tag-key", "Values": ["kubernetes.io/cluster/chaos-cluster"] }, { "Name": "tag-value", "Values": ["owned"] }, { "Name": "tag-key", "Values": ["eksctl.cluster.k8s.io/v1alpha1/cluster-name"] }, ] terminate_instances(filters=filters, az="us-west-2") called_filters = deepcopy(filters) called_filters.append({ "Name": "availability-zone", "Values": ["us-west-2"] }) client.describe_instances.assert_called_with(Filters=called_filters) client.terminate_instances.assert_called_with(InstanceIds=instance_ids)
def test_terminate_instances_az_no_instances(aws_client): client = MagicMock() aws_client.return_value = client az = "us-west-2" filters = [{"Name": "availability-zone", "Values": ["us-west-2"]}] client.describe_instances.return_value = { "Reservations": [{ "Instances": [] }] } with pytest.raises(FailedActivity) as x: terminate_instances(az=az) assert "No instances found matching filters: %s" % filters in str(x.value)
def test_terminate_normal_instances(aws_client): client = MagicMock() aws_client.return_value = client instance_ids = ["i-987654321fedcba", "i-392024ac3252ecb"] client.describe_instances.return_value = { "Reservations": [{ "Instances": [ { "InstanceId": instance_ids[0], "InstanceLifecycle": "normal" }, { "InstanceId": instance_ids[1], "InstanceLifecycle": "normal" }, ] }] } terminate_instances(instance_ids) client.terminate_instances.assert_called_with(InstanceIds=instance_ids)
def test_terminate_instances_no_values(): with pytest.raises(FailedActivity) as x: terminate_instances() assert 'To terminate instances, you must specify the instance-id, an ' \ 'Availability Zone, or provide a set of filters' in str(x.value)