def test_init_aws_api_configuration_policy():
    configuration = AWSAPIConfigurationPolicy()
    configuration.configuration_file_full_path = os.path.join(
        os.path.dirname(os.path.abspath(__file__)), "configuration_values.py")
    configuration.init_from_file()

    assert configuration.aws_api_s3_cache_dir == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/s3")
    assert configuration.aws_api_s3_buckets_cache_file == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/s3/buckets.json")

    assert configuration.aws_api_ec2_cache_dir == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/ec2")
    assert configuration.aws_api_ec2_security_groups_cache_file == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/ec2/network_security_groups.json")

    assert configuration.aws_api_lambda_cache_dir == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/lambda")
    assert configuration.aws_api_lambdas_cache_file == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/lambda/lambdas.json")

    assert configuration.aws_api_cleanup_reports_dir == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/cleanup")
    assert configuration.aws_api_cleanups_lambda_file == os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "ignore/cache/12345678910/cleanup/lambda.txt")
Exemplo n.º 2
0
def put_secret_value(arguments) -> None:
    configuration = AWSAPIConfigurationPolicy()
    configuration.configuration_file_full_path = arguments.configuration_file_full_path
    configuration.init_from_file()

    aws_api = AWSAPI(configuration)

    aws_api.put_secret_value(arguments.secret_name, arguments.secret_value)
Exemplo n.º 3
0
def get_secret_file(arguments) -> None:
    if arguments.configuration_file_full_path != "None":
        configuration = AWSAPIConfigurationPolicy()
        configuration.configuration_file_full_path = arguments.configuration_file_full_path
        configuration.init_from_file()
        aws_api = AWSAPI(configuration)
    else:
        aws_api = AWSAPI()

    aws_api.get_secret_file(arguments.secret_name, arguments.secret_file_path)
Exemplo n.º 4
0
def init_and_cache(arguments) -> None:
    configuration = AWSAPIConfigurationPolicy()
    configuration.configuration_file_full_path = arguments.configuration_file_full_path
    configuration.init_from_file()

    aws_api = AWSAPI(configuration)

    init_functions = {"interfaces": aws_api.init_network_interfaces}
    cache_files = {
        "interfaces": configuration.aws_api_ec2_network_interfaces_cache_file
    }

    objects = init_functions[arguments.target]()
    aws_api.cache_objects(objects, cache_files[arguments.target])
Exemplo n.º 5
0
def cleanup(arguments) -> None:
    configuration = AWSAPIConfigurationPolicy()
    configuration.configuration_file_full_path = arguments.configuration_file_full_path
    configuration.init_from_file()

    aws_api = AWSAPI(configuration)

    init_functions = {"interfaces": aws_api.init_network_interfaces}
    cache_files = {
        "interfaces": configuration.aws_api_ec2_network_interfaces_cache_file
    }
    output_files = {
        "interfaces":
        configuration.aws_api_cleanups_network_interfaces_report_file
    }

    init_functions[arguments.target](from_cache=True,
                                     cache_file=cache_files[arguments.target])
    aws_api.cleanup_report_network_interfaces(output_files[arguments.target])
Exemplo n.º 6
0
    def __init__(self, configuration):
        aws_api_conf = AWSAPIConfigurationPolicy()
        aws_api_conf.configuration_file_full_path = configuration.aws_api_configuration_values_file_path
        aws_api_conf.init_from_file()
        self.aws_api = AWSAPI(configuration=aws_api_conf)

        jenkins_conf = JenkinsConfigurationPolicy()
        jenkins_conf.configuration_file_full_path = configuration.jenkins_manager_configuration_values_file_path
        jenkins_conf.init_from_file()
        self.jenkins_manager = JenkinsManager(configuration=jenkins_conf)

        self.jenkins_ec2_instance_type = configuration.jenkins_ec2_instance_type
        self.ssh_master_access_key_name = "jenkins-master-access-key"
        self.ssh_agent_access_key_name = "jenkins-agent-access-key"

        self.jenkins_mater_iam_role_name = "role-jenkins-master"
        self.jenkins_mater_iam_role_name = "policy-jenkins-master-spot-fleet-access"
        self.public_subnet_id = ""
        self.private_subnet_id = ""
        self.jenkins_master_security_group_name = ""
        self.ssh_agent_security_group_name = ""
Exemplo n.º 7
0
def set_session_credentials(arguments, configs_dict) -> None:
    configuration = AWSAPIConfigurationPolicy()
    configuration.configuration_file_full_path = "~/Desktop/tmp/configuration_values.py"
    configuration.init_from_file()

    accounts = CommonUtils.load_object_from_module(configuration.accounts_file,
                                                   "main")
    AWSAccount.set_aws_account(accounts[configuration.aws_api_account])

    session = SessionsManager.connect_session()
    credentials = session.get_credentials()
    credentials = credentials.get_frozen_credentials()

    ret = f"\n\n[{arguments.profile_name}]"
    ret += f"\naws_access_key_id = {credentials.access_key}"
    ret += f"\naws_secret_access_key = {credentials.secret_key}"
    ret += f"\naws_session_token = {credentials.token}"

    with open("~/.aws/credentials") as file_handler:
        contents = file_handler.read()

    if arguments.profile_name in contents:
        start_index = contents.index(f"[{arguments.profile_name}]")

        try:
            end_index = contents.index("[", start_index + 1)
            tail_string = "\n\n" + contents[end_index:].strip("\n")
        except ValueError:
            tail_string = ""

        new_contents = contents[:start_index].strip("\n") + ret + tail_string
        with open("~/.aws/credentials", "w+") as file_handler:
            file_handler.write(new_contents)

    else:
        with open("~/.aws/credentials", "a+") as file_handler:
            file_handler.write(ret)
Exemplo n.º 8
0
from horey.h_logger import get_logger
from horey.aws_api.aws_api_configuration_policy import AWSAPIConfigurationPolicy
from horey.aws_api.base_entities.region import Region
from horey.aws_api.aws_services_entities.acm_certificate import ACMCertificate
from horey.aws_api.aws_services_entities.aws_lambda import AWSLambda
from horey.aws_api.aws_services_entities.lambda_event_source_mapping import LambdaEventSourceMapping
from horey.common_utils.common_utils import CommonUtils

configuration_values_file_full_path = os.path.join(
    os.path.dirname(os.path.abspath(__file__)),
    "h_logger_configuration_values.py")

logger = get_logger(
    configuration_values_file_full_path=configuration_values_file_full_path)

configuration = AWSAPIConfigurationPolicy()
configuration.configuration_file_full_path = os.path.abspath(
    os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "..",
                 "ignore", "aws_api_configuration_values.py"))
configuration.init_from_file()

aws_api = AWSAPI(configuration=configuration)

mock_values_file_path = os.path.abspath(
    os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "ignore",
                 "mock_values.py"))
mock_values = CommonUtils.load_object_from_module(mock_values_file_path,
                                                  "main")


def test_add_managed_region():
Exemplo n.º 9
0
import os
import pytest

from horey.aws_api.aws_api import AWSAPI

from horey.h_logger import get_logger
from horey.aws_api.aws_api_configuration_policy import AWSAPIConfigurationPolicy


logger = get_logger()
configuration = AWSAPIConfigurationPolicy()
configuration.configuration_file_full_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "configuration_values.py")
configuration.init_from_file()

aws_api = AWSAPI(configuration=configuration)


@pytest.mark.skip(reason="IAM policies cleanup will be enabled explicitly")
def test_init_from_cache_and_cleanup_report_iam_policies():
    aws_api.init_iam_policies(from_cache=True, cache_file=configuration.aws_api_iam_policies_cache_file)
    aws_api.init_iam_roles(from_cache=True, cache_file=configuration.aws_api_iam_roles_cache_file)
    aws_api.cleanup_report_iam_policies(configuration.aws_api_cleanups_iam_policies_report_file)


@pytest.mark.skip(reason="IAM roles cleanup will be enabled explicitly")
def test_init_from_cache_and_cleanup_report_iam_roles():
    aws_api.init_iam_roles(from_cache=True, cache_file=configuration.aws_api_iam_roles_cache_file)
    aws_api.cleanup_report_iam_roles(configuration.aws_api_cleanups_iam_roles_report_file)


@pytest.mark.skip(reason="No way of currently testing this")