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)
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")
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"))
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")
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"))
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", )