Example #1
0
def test_tag(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)

    instances = tag(mock_aws_config, ["Project=top secret"], "alice")

    assert len(instances) == 1
    assert instances[0]["Tag: Project"] == "top secret"
Example #2
0
def test_config_override_volume_size(mock_aws_config):
    mock_aws_config["volume_size"] = 77
    launch(mock_aws_config, "alice", ami=ami_id)

    ec2_client = boto3.client("ec2", region_name=mock_aws_config["region"])
    volumes = ec2_client.describe_volumes()
    assert volumes["Volumes"][0]["Size"] == 77
Example #3
0
def test_describe_by_name_match(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)
    launch(mock_aws_config, "alex", ami_id)

    instances = describe(config=mock_aws_config, name_match="lic")

    assert len(instances) == 1
    assert instances[0]["Name"] == "alice"
Example #4
0
def test_tags_filter(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)
    launch(mock_aws_config, "alex", ami_id)

    instances = instance_tags(config=mock_aws_config, name_match="lic")

    assert len(instances) == 1
    assert instances[0]["Tags"] == "Name=alice"
Example #5
0
def test_ebs_encrypt_with_kms(mock_aws_config):
    mock_aws_config[
        "kms_key_id"] = "arn:aws:kms:ap-southeast-2:123456789012:key/abcdef"
    ec2_client = boto3.client("ec2", region_name=mock_aws_config["region"])
    launch(mock_aws_config, "alice", ami_id)
    volumes = ec2_client.describe_volumes()
    assert volumes["Volumes"][0]["Encrypted"] is True
    assert volumes["Volumes"][0][
        "KmsKeyId"] == "arn:aws:kms:ap-southeast-2:123456789012:key/abcdef"
Example #6
0
def test_describe_running_only(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)
    launch(mock_aws_config, "sam", ami_id)
    stop(mock_aws_config, "sam")

    # show only running instances
    instances = describe(config=mock_aws_config, show_running_only=True)
    assert len(instances) == 1
    assert instances[0]["Name"] == "alice"
Example #7
0
def test_describe(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)
    launch(mock_aws_config, "sam", ami_id)

    instances = describe(config=mock_aws_config)
    print(instances)

    assert len(instances) == 2
    assert instances[0]["Name"] == "alice"
    assert instances[1]["Name"] == "sam"
Example #8
0
def test_describe_columns(mock_aws_config):
    launch(mock_aws_config, "sam", ami_id)
    launch(mock_aws_config, "alice", ami_id)

    instances = describe(config=mock_aws_config, columns="SubnetId,Name")
    print(instances)

    assert len(instances) == 2
    assert instances[0]["Name"] == "alice"
    assert instances[1]["Name"] == "sam"
    assert "subnet" in instances[0]["SubnetId"]
    assert "subnet" in instances[1]["SubnetId"]
Example #9
0
def test_describe_terminated(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)
    launch(mock_aws_config, "sam", ami_id)
    terminate(mock_aws_config, "sam")

    # by default don't show terminated instances
    instances = describe(config=mock_aws_config)
    assert len(instances) == 1
    assert instances[0]["Name"] == "alice"

    # when requested, show terminated instances
    instances = describe(config=mock_aws_config, include_terminated=True)
    assert len(instances) == 2
Example #10
0
def test_describe_instance_id(mock_aws_config):
    instances = launch(mock_aws_config, "alice", ami_id)
    instance_id = instances[0]["InstanceId"]

    instances = describe(config=mock_aws_config, name=instance_id)
    assert len(instances) == 1
    assert instances[0]["Name"] == "alice"
Example #11
0
def test_override_key_name(mock_aws_config):
    instances = launch(mock_aws_config, "alice", ami_id, key_name="magic-key")
    instance_id = instances[0]["InstanceId"]

    instance = describe_instance0(mock_aws_config["region"], instance_id)

    assert "magic-key" in instance["KeyName"]
Example #12
0
def test_launch(mock_aws_config):
    instances = launch(mock_aws_config, "alice", ami=ami_id)
    assert "amazonaws.com" in instances[0]["DnsName"]

    ec2_client = boto3.client("ec2", region_name=mock_aws_config["region"])
    volumes = ec2_client.describe_volumes()
    assert volumes["Volumes"][0]["Size"] == 15
Example #13
0
def test_launch_has_userdata(mock_aws_config):
    print(
        launch(
            mock_aws_config,
            "test_userdata",
            ami_id,
            userdata="src/aec/config-example/userdata/amzn-install-docker.yaml",
        ))
Example #14
0
def test_modify(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)

    instances = modify(name="alice", type="c5.2xlarge", config=mock_aws_config)

    instance = describe_instance0(mock_aws_config["region"],
                                  instances[0]["InstanceId"])

    assert instance["InstanceType"] == "c5.2xlarge"
    assert instance["EbsOptimized"] is True

    instances = modify(name="alice", type="t2.medium", config=mock_aws_config)

    instance = describe_instance0(mock_aws_config["region"],
                                  instances[0]["InstanceId"])

    assert instance["InstanceType"] == "t2.medium"
    assert instance["EbsOptimized"] is False
Example #15
0
def test_tags(mock_aws_config):
    mock_aws_config["additional_tags"] = {
        "Owner": "*****@*****.**",
        "Project": "top secret"
    }
    launch(mock_aws_config, "alice", ami_id)

    instances = instance_tags(config=mock_aws_config)

    assert len(instances) == 1
    assert instances[0][
        "Tags"] == "Name=alice, [email protected], Project=top secret"

    instances = instance_tags(config=mock_aws_config,
                              keys=["Owner", "Project"])

    assert len(instances) == 1
    assert instances[0]["Tag: Owner"] == "*****@*****.**"
    assert instances[0]["Tag: Project"] == "top secret"
Example #16
0
def test_launch_template(mock_aws_config):
    ec2_client = boto3.client("ec2", region_name=mock_aws_config["region"])
    ec2_client.create_launch_template(
        LaunchTemplateName="launchie",
        LaunchTemplateData={
            "ImageId":
            ami_id,
            "BlockDeviceMappings": [{
                "DeviceName": "/dev/sda1",
                "Ebs": {
                    "VolumeSize": 20,
                    "DeleteOnTermination": True,
                    "VolumeType": "gp3",
                    "Encrypted": True,
                },
            }],
        },
    )

    instances = launch(mock_aws_config, "alice", template="launchie")
    assert "amazonaws.com" in instances[0]["DnsName"]
Example #17
0
def test_launch_multiple_security_groups(mock_aws_config):
    mock_aws_config["vpc"]["security_group"] = ["one", "two"]
    print(launch(mock_aws_config, "alice", ami_id))
Example #18
0
def test_launch_without_instance_profile(mock_aws_config):
    del mock_aws_config["iam_instance_profile_arn"]
    print(launch(mock_aws_config, "alice", ami_id))
Example #19
0
def test_launch_with_ami_match_string(mock_aws_config):
    instances = launch(mock_aws_config, "alice", ami="ubuntu1604")
    assert "amazonaws.com" in instances[0]["DnsName"]
Example #20
0
def test_ebs_encrypted_by_default(mock_aws_config):
    ec2_client = boto3.client("ec2", region_name=mock_aws_config["region"])
    launch(mock_aws_config, "alice", ami=ami_id)
    volumes = ec2_client.describe_volumes()
    assert volumes["Volumes"][0]["Encrypted"] is True
    assert volumes["Volumes"][0]["KmsKeyId"]
Example #21
0
def test_logs(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)

    logs(config=mock_aws_config, name="alice")
Example #22
0
def test_terminate(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)

    terminate(config=mock_aws_config, name="alice")
Example #23
0
def test_launch_without_public_ip_address(mock_aws_config):
    mock_aws_config["vpc"]["associate_public_ip_address"] = False
    instances = launch(mock_aws_config, "alice", ami_id)
    assert "ec2.internal" in instances[0]["DnsName"]
Example #24
0
def test_stop_start(mock_aws_config):
    launch(mock_aws_config, "alice", ami_id)

    stop(mock_aws_config, name="alice")

    start(mock_aws_config, name="alice")
Example #25
0
def test_launch_no_region_specified(mock_aws_config):
    del mock_aws_config["region"]
    os.environ["AWS_DEFAULT_REGION"] = "ap-southeast-2"
    instances = launch(mock_aws_config, "alice", ami_id)
    assert "amazonaws.com" in instances[0]["DnsName"]
Example #26
0
def test_describe_instances_uptime(mock_aws_config):
    launch(mock_aws_config, "alice", AMIS[0]["ami_id"])
    describe_instances_uptime(mock_aws_config)