Exemplo n.º 1
0
def test_deletion_filtered_tags():
    """ Test deletion methods """

    # creating tests objects
    first_ami = AMI()
    first_ami.name = "test-ami1"
    first_ami.id = 'ami-28c2b348'
    first_ami.creation_date = "2017-11-04T01:35:31.000Z"

    second_ami = AMI()
    second_ami.name = "test-ami2"
    second_ami.id = 'ami-28c2b349'
    second_ami.creation_date = "2017-11-04T01:35:31.000Z"
    second_ami.tags = [
        AWSTag.object_with_json(dict(Key="env", Value="prod")),
        AWSTag.object_with_json(dict(Key="role", Value="nginx")),
    ]

    third_ami = AMI()
    third_ami.name = "test-ami3"
    third_ami.id = 'ami-28c2b350'
    third_ami.creation_date = "2017-11-04T01:35:31.000Z"
    third_ami.tags = [
        AWSTag.object_with_json(dict(Key="env", Value="dev")),
        AWSTag.object_with_json(dict(Key="role", Value="nginx")),
    ]

    # constructing dicts
    amis_dict = dict()
    amis_dict[first_ami.id] = first_ami
    amis_dict[second_ami.id] = second_ami
    amis_dict[third_ami.id] = third_ami

    parser = parse_args(
        [
            '--keep-previous', '0',
            '--tag', 'role=nginx',
        ]
    )

    app = App(parser)
    # testing filter
    candidates = app.fetch_candidates(amis_dict)

    candidates_tobedeleted = app.prepare_candidates(candidates)
    assert len(candidates) == 3
    assert candidates_tobedeleted == [second_ami, third_ami]

    parser = parse_args(
        [
            '--keep-previous', '0',
            '--tag', 'role=nginx',
            '--tag', 'env=dev',
        ]
    )

    app = App(parser)
    candidates_tobedeleted2 = app.prepare_candidates(candidates)
    assert len(candidates) == 3
    assert candidates_tobedeleted2 == [third_ami]
Exemplo n.º 2
0
def test_tags_values_to_string_without_filters():
    first_tag = AWSTag()
    first_tag.key = "Key1"
    first_tag.value = "Value1"

    second_tag = AWSTag()
    second_tag.key = "Key2"
    second_tag.value = "Value2"

    third_tag = AWSTag()
    third_tag.key = "Key3"
    third_tag.value = "Value3"

    tags = [first_tag, third_tag, second_tag]
    filters = []

    tags_values_string = AMICleaner.tags_values_to_string(tags, filters)
    assert tags_values_string is not None
    assert tags_values_string == "Value1.Value2.Value3"
Exemplo n.º 3
0
def test_map_with_tag_exclusions():
    # tags
    stack_tag = AWSTag()
    stack_tag.key = "stack"
    stack_tag.value = "web-server"

    env_tag = AWSTag()
    env_tag.key = "env"
    env_tag.value = "prod"

    # creating tests objects
    # prod and web-server
    first_ami = AMI()
    first_ami.id = 'ami-28c2b348'
    first_ami.name = "ubuntu-20160102"
    first_ami.tags.append(stack_tag)
    first_ami.tags.append(env_tag)
    first_ami.creation_date = datetime.now()

    # just prod
    second_ami = AMI()
    second_ami.id = 'ami-28c2b349'
    second_ami.name = "ubuntu-20160103"
    second_ami.tags.append(env_tag)
    second_ami.creation_date = datetime.now()

    # just web-server
    third_ami = AMI()
    third_ami.id = 'ami-28c2b350'
    third_ami.name = "debian-20160104"
    third_ami.tags.append(stack_tag)
    third_ami.creation_date = datetime.now()

    # creating amis to drop dict
    candidates = [first_ami, second_ami, third_ami]

    # grouping strategy
    grouping_strategy = {
        "key": "tags",
        "values": ["stack", "env"],
        "excluded": ["prod"]
    }
    grouped_amis = AMICleaner().map_candidates(candidates, grouping_strategy)
    assert grouped_amis is not None
    assert grouped_amis.get("prod") is None
    assert grouped_amis.get("prod.web-server") is None
    assert len(grouped_amis.get("web-server")) == 1
Exemplo n.º 4
0
def test_map_with_tags():
    # tags
    stack_tag = AWSTag()
    stack_tag.key = "stack"
    stack_tag.value = "web-server"

    env_tag = AWSTag()
    env_tag.key = "env"
    env_tag.value = "prod"

    # creating tests objects
    # prod and web-server
    first_ami = AMI()
    first_ami.id = 'ami-28c2b348'
    first_ami.name = "ubuntu-20160102"
    first_ami.tags.append(stack_tag)
    first_ami.tags.append(env_tag)
    first_ami.creation_date = datetime.now()

    # just prod
    second_ami = AMI()
    second_ami.id = 'ami-28c2b349'
    second_ami.name = "ubuntu-20160103"
    second_ami.tags.append(env_tag)
    second_ami.creation_date = datetime.now()

    # prod and web-server
    third_ami = AMI()
    third_ami.id = 'ami-28c2b350'
    third_ami.name = "debian-20160104"
    third_ami.tags.append(stack_tag)
    third_ami.tags.append(env_tag)
    third_ami.creation_date = datetime.now()

    # creating amis to drop dict
    candidates = [first_ami, second_ami, third_ami]

    # grouping strategy
    grouping_strategy = {"key": "tags", "values": ["stack", "env"]}
    grouped_amis = AMICleaner().map_candidates(candidates, grouping_strategy)
    assert grouped_amis is not None
    assert len(grouped_amis.get("prod")) == 1
    assert len(grouped_amis.get("prod.web-server")) == 2
Exemplo n.º 5
0
def test_tags_values_to_string_without_filters():
    first_tag = AWSTag()
    first_tag.key = "Key1"
    first_tag.value = "Value1"

    second_tag = AWSTag()
    second_tag.key = "Key2"
    second_tag.value = "Value2"

    third_tag = AWSTag()
    third_tag.key = "Key3"
    third_tag.value = "Value3"

    tags = [first_tag, third_tag, second_tag]
    filters = []

    tags_values_string = AMICleaner.tags_values_to_string(tags, filters)
    assert tags_values_string is not None
    assert tags_values_string == "Value1.Value2.Value3"
Exemplo n.º 6
0
def test_tags_values_to_string():
    first_tag = AWSTag()
    first_tag.key = "Key1"
    first_tag.value = "Value1"

    second_tag = AWSTag()
    second_tag.key = "Key2"
    second_tag.value = "Value2"

    third_tag = AWSTag()
    third_tag.key = "Key3"
    third_tag.value = "Value3"

    fourth_tag = AWSTag()
    fourth_tag.key = "Key4"
    fourth_tag.value = "Value4"

    tags = [first_tag, third_tag, second_tag, fourth_tag]
    filters = ["Key2", "Key3"]

    tags_values_string = AMICleaner.tags_values_to_string(tags, filters)
    assert tags_values_string is not None
    assert tags_values_string == "Value2.Value3"
Exemplo n.º 7
0
def test_get_awstag_from_none():
    aws_tag = AWSTag.object_with_json(None)
    assert aws_tag is None
Exemplo n.º 8
0
def test_get_awstag_from_json():
    json_to_parse = {"Key": "Name", "Value": "Test"}
    aws_tag = AWSTag.object_with_json(json_to_parse)
    assert aws_tag.value == "Test"
    assert aws_tag.key == "Name"
Exemplo n.º 9
0
def test_tags_values_to_string():
    first_tag = AWSTag()
    first_tag.key = "Key1"
    first_tag.value = "Value1"

    second_tag = AWSTag()
    second_tag.key = "Key2"
    second_tag.value = "Value2"

    third_tag = AWSTag()
    third_tag.key = "Key3"
    third_tag.value = "Value3"

    fourth_tag = AWSTag()
    fourth_tag.key = "Key4"
    fourth_tag.value = "Value4"

    tags = [first_tag, third_tag, second_tag, fourth_tag]
    filters = ["Key2", "Key3"]

    tags_values_string = AMICleaner.tags_values_to_string(tags, filters)
    assert tags_values_string is not None
    assert tags_values_string == "Value2.Value3"
Exemplo n.º 10
0
def test_get_awstag_from_none():
    aws_tag = AWSTag.object_with_json(None)
    assert aws_tag is None
Exemplo n.º 11
0
def test_models_to_tring():
    assert str(AMI()) is not None
    assert str(AWSBlockDevice()) is not None
    assert str(AWSEC2Instance()) is not None
    assert str(AWSTag()) is not None
Exemplo n.º 12
0
def test_get_awstag_from_json():
    json_to_parse = {"Key": "Name", "Value": "Test"}
    aws_tag = AWSTag.object_with_json(json_to_parse)
    assert aws_tag.value == "Test"
    assert aws_tag.key == "Name"