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"
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
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"
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"
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"
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"
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"
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"]
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
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"
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"]
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
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", ))
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
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"
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"]
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))
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))
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"]
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"]
def test_logs(mock_aws_config): launch(mock_aws_config, "alice", ami_id) logs(config=mock_aws_config, name="alice")
def test_terminate(mock_aws_config): launch(mock_aws_config, "alice", ami_id) terminate(config=mock_aws_config, name="alice")
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"]
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")
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"]
def test_describe_instances_uptime(mock_aws_config): launch(mock_aws_config, "alice", AMIS[0]["ami_id"]) describe_instances_uptime(mock_aws_config)