Exemplo n.º 1
0
    def test_report(self):
        project_id_1 = gen_test_project()
        gen_report(project_id_1)
        project_id_2 = gen_test_project()
        gen_report(project_id_2)

        reports = get_reports()

        self.assertGreaterEqual(len(reports), 2)
Exemplo n.º 2
0
    def test_report(self):
        project_id = gen_test_project()

        report = gen_report(project_id)
        report_from_s3 = get_report(project_id)

        self.assertEqual(report["config"]["name"], "test")
        self.assertEqual(report_from_s3["config"]["name"], "test")
Exemplo n.º 3
0
 def test_request_get(self):
     # create project
     project_id_1 = gen_test_project()
     gen_report(project_id_1)
     project_id_2 = gen_test_project()
     gen_report(project_id_2)
     project_id_3 = gen_test_project()
     # get state
     event = {
         "httpMethod": "GET",
         "requestContext": {
             "domainName": "test.local"
         },
     }
     result = lambda_handler(event, {})
     print(result["body"])
     self.assertEqual(result["statusCode"], 200)
     self.assertTrue(result["body"].startswith("<!doctype"))
Exemplo n.º 4
0
    def test_report(self):
        project_id = gen_test_project()

        report = gen_report(project_id)
        report_from_s3 = json.loads(
            read_key_or_default(f"{project_id}/report.json", ""))

        self.assertEqual(report["config"]["name"], "test")
        self.assertEqual(report_from_s3["config"]["name"], "test")
Exemplo n.º 5
0
 def test_request_get(self):
     # create project
     project_id = gen_test_project()
     tf_raw_state = read_file("test_data/terraform.teststate")
     write_key(f"{project_id}/terraform.tfstate", tf_raw_state)
     report = gen_report(project_id)
     print(report)
     # get state
     event = {
         "httpMethod": "GET",
         "pathParameters": {"projectId": project_id},
         "requestContext": {"domainName": "test.local"},
     }
     result = lambda_handler(event, {})
     print(result["body"])
     self.assertEqual(result["statusCode"], 200)
     self.assertTrue(result["body"].startswith("<!doctype"))
Exemplo n.º 6
0
def lambda_handler(event, context):
    CONFIG_TOPIC = os.environ["CONFIG_TOPIC"]
    STATE_TOPIC = os.environ["STATE_TOPIC"]
    DOMAIN = os.environ.get("DOMAIN")

    key = event["Records"][0]["s3"]["object"]["key"]
    project_id = key.split("/")[0]
    filename = key.split("/")[1]

    logger.info(f"Key is {key}")
    logger.info(f"project_id is {project_id}")
    logger.info(f"filename is {filename}")

    config = get_config(project_id)
    project_name = config["name"]

    if filename == "config.json":
        send_message(
            CONFIG_TOPIC,
            project_id,
            f'Project "{project_name}" ({project_id}) settings has been creted or updated',
            f"Project {project_name} update",
        )
    if filename == "terraform.tfstate":
        report = gen_report(project_id)
        state = "UNKNOWN"
        if report["state"] == 1:
            state = "WARNING"
        if report["state"] == 2:
            state = "CRITICAL"
        send_message(
            STATE_TOPIC,
            project_id,
            f'Project "{project_name}" ({project_id}) was deployed is now in state {state},\nPlease check here https://{DOMAIN}/{project_id}/info for further details',
            f"[{state}] Project {project_name} was deployed",
        )