Пример #1
0
def instance_ready(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)
    instance_id = event.get("id", None)

    logs.info(
        "Handler",
        "start: {}, {}, {}".format(account_name, region, instance_id),
    )

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler", "Error: start setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances.set_ready_state(instance_id)
    except Exception as error:
        logs.info("Handler", "Error: set_ready_state {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success("wohooo - ready state set!")
Пример #2
0
def create(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)

    logs.info("Handler", "create: {}, {}".format(account_name, region))

    try:
        account, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler", "Error: create setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances.create(Instance(event, account))
    except Exception as error:
        return Response.error(error.args[0])

    return Response.created(
        "perfecto - within 5 minutes your instance be ready available!")
Пример #3
0
def terminate(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)
    instance_id = event.get("id", None)

    logs.info(
        "Handler",
        "terminate: {}, {}, {}".format(account_name, region, instance_id),
    )

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler",
                  "Error: list_images setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances.terminate(instance_id)
    except Exception as error:
        logs.info("Handler", "Error: list_images {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success("geweldig - killing the instance!")
Пример #4
0
def create_image(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)
    instance_id = event.get("id", None)
    image_name = event.get("image_name", None)

    logs.info(
        "Handler",
        "start: {}, {}, {}".format(account_name, region, instance_id),
    )

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler", "Error: start setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances.create_image(instance_id, image_name)
    except Exception as error:
        logs.info("Handler", "Error: Start Instance {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success("ja precies - creating image!")
Пример #5
0
def list_instances(event, context):
    if ("queryStringParameters" not in event
            or event.get("queryStringParameters") is None):
        return Response.error("Missing required parameters: account, region")

    account_name = event.get("queryStringParameters").get("account", None)
    region = event.get("queryStringParameters").get("region", None)

    owner = event.get("queryStringParameters").get("owner", None)

    logs.info(
        "Handler",
        "list_instances: {}, {}, {}".format(account_name, region, owner),
    )

    filters = []
    if owner:
        filters.append({"Name": "tag:Owner", "Values": [owner]})

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler",
                  "Error: list_instances setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances_list = instances.list(filters)
    except Exception as error:
        logs.info("Handler", "Error: list_instances {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success(instances_list)
Пример #6
0
def list_securitygroups(event, context):
    if ("queryStringParameters" not in event
            or event.get("queryStringParameters") is None):
        return Response.error("Missing required parameters: account, region")

    account_name = event.get("queryStringParameters", {}).get("account", None)
    region = event.get("queryStringParameters", {}).get("region", None)

    logs.info("Handler",
              "list_securitygroups: {}, {}".format(account_name, region))

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info(
            "Handler",
            "Error: list_securitygroups setup {}".format(error.args[0]),
        )
        return Response.error(error.args[0])

    try:
        securitygroups = instances.list_security_groups()
    except Exception as error:
        logs.info("Handler",
                  "Error: list_securitygroups {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success(securitygroups)
Пример #7
0
def stop(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)
    instance_id = event.get("id", None)

    logs.info("Handler", "stop: {}, {}, {}".format(account_name, region,
                                                   instance_id))

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler", "Error: stop setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances.stop(instance_id)
    except Exception as error:
        logs.info("Handler", "Error: stop {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success("geweldig - instance is stopping now!")
Пример #8
0
def update(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)

    logs.info("Handler", "update: {}, {}".format(account_name, region))

    try:
        account, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler", "Error: update setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        entity = Instance(event, account)
        instances.update(entity)
    except Exception as error:
        logs.info("Handler", "Error: update {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success("all right - instance attributes updated!")
Пример #9
0
def create(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: resultados and comentarios")

    event = jason.loads(event.get("body"))
    seconds = time.time()

    resultados = event.get("resultados", None)
    votos = []
    for r in resultados.split('&'):
        votos.append(r.split('='))

    comentarios = Comentarios(encuesta_id=seconds,
                              comentario=event.get("comentarios", None))

    s = Session(mysql_engine())
    objects = []
    for v in votos:
        e = Votos(pregunta=v[0], voto=v[1], encuesta_id=seconds)
        objects.append(e)

    s.bulk_save_objects(objects)
    s.bulk_save_objects([comentarios])
    s.commit()

    logs.info("Handler", "create: {}, {}".format(votos, comentarios))

    return Response.created("create: {}, {}".format(resultados, comentarios))
Пример #10
0
def start_tagged_instances(event, context):
    current_hour = dt.datetime.today().hour
    try:
        settings = Settings()
    except Exception as error:
        logs.info("Handler", "Error getting settings {}".format(error.args[0]))
        return Response.error(error.args[0])

    for account_name in settings.accounts:
        logs.info(
            "Handler",
            "Info: start_tagged_instances account {}".format(account_name),
        )
        account_config = settings.accounts.get(account_name)

        if not account_config.get("enabled", False):
            logs.info(
                "Handler",
                "Info: start_tagged_instances account {} not enabled, skipping"
                .format(account_name),
            )
            continue

        for region in account_config.get("regions"):
            logs.info(
                "Handler",
                "Info: start_tagged_instances region {}".format(region),
            )
            try:
                _, instances = _build_instance_model(account_name, region,
                                                     settings)
            except Exception as error:
                logs.info(
                    "Handler",
                    "Error: start_tagged_instances setup {}".format(
                        error.args[0]),
                )
                continue
                pass

            try:
                instances.start_tagged_instances([{
                    "Name": "tag:StartTime",
                    "Values": [str(current_hour)]
                }])
            except Exception as error:
                logs.info(
                    "Handler",
                    "Error: start_tagged_instances {}".format(error.args[0]),
                )
                continue
                pass

    return Response.success("ok")
Пример #11
0
def terminate_tagged_instances(event, context):
    current_date = datetime.now().strftime("%d/%m/%Y")
    try:
        settings = Settings()
    except Exception as error:
        logs.info("Handler", "Error getting settings {}".format(error.args[0]))
        return Response.error(error.args[0])

    for account_name in settings.accounts:
        account_config = settings.accounts.get(account_name)

        if not account_config.get("enabled", False):
            logs.info(
                "Handler",
                "Info: terminate_tagged_instances account {} not enabled, skipping"
                .format(account_name),
            )
            continue

        for region in account_config.get("regions"):

            try:
                _, instances = _build_instance_model(account_name, region,
                                                     settings)
            except Exception as error:
                logs.info(
                    "Handler",
                    "Error: terminate_tagged_instances setup {}".format(
                        error.args[0]),
                )
                continue
                pass

            try:
                instances.terminate_tagged_instances([
                    {
                        "Name": "tag:TerminateDate",
                        "Values": [str(current_date)],
                    },
                ])
            except Exception as error:
                logs.info(
                    "Handler",
                    "Error: terminate_tagged_instances {}".format(
                        error.args[0]),
                )
                continue
                pass

    return Response.success("ok")
Пример #12
0
def info(event, context):
    storage = Storage(Settings().config)

    try:
        owners_list = storage.list_all_owners()
    except Exception as error:
        logs.info("Handler", "Error: list_all_owners {}".format(error.args[0]))
        return Response.error(error.args[0])

    response = {
        "users": owners_list,
        "environments": ["test", "prod", "poc", "demo"],
    }
    return Response.success(response)
Пример #13
0
def start(event, context):
    if "body" not in event or event.get("body") is None:
        return Response.error(
            "Missing required parameters: account, region, id")

    event = json.loads(event.get("body"))

    account_name = event.get("account", None)
    region = event.get("region", None)
    instance_id = event.get("id", None)

    logs.info(
        "Handler",
        "start: {}, {}, {}".format(account_name, region, instance_id),
    )

    try:
        _, instances = _build_instance_model(account_name, region)
    except Exception as error:
        logs.info("Handler", "Error: start setup {}".format(error.args[0]))
        return Response.error(error.args[0])

    try:
        instances.start(instance_id)
    except exception.DnsRecordsTagsMissing as error:
        logs.info(
            "Handler",
            "DnsRecordsTagsMissing: Start instance {}".format(error.args[0]),
        )
        return Response.success("instance started, but ...{}".format(
            error.args[0]))
    except Exception as error:
        logs.info("Handler", "Error: Start instance {}".format(error.args[0]))
        return Response.error(error.args[0])

    return Response.success("wohooo - instance started!")