5-app-infra/3-artifact-publish/docker/cdmc/report_engine/main.py (42 lines of code) (raw):
# Copyright 2023 Google, LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
from generate_report import generateReport
from flask import Flask, request, Response
import uuid
app = Flask(__name__)
@app.route("/")
def hello_world():
return Response ("CDMC Reports running", status=200)
@app.route("/generate", methods= ["POST"])
def generate():
projectNumber=''
if(request.args.get('orgId')): orgId = request.args.get('orgId')
else: return Response ("orgId parameter not set", status=400)
if(request.args.get('projectId')): projectId = request.args.get('projectId')
else: return Response ("projectId parameter not set", status=400)
if(request.args.get('topicProjectId')): topicProjectId = request.args.get('topicProjectId')
else: return Response ("topicProjectId parameter not set", status=400)
if(request.args.get('topic')): topic = request.args.get('topic')
else: return Response ("topic parameter not set", status=400)
if(request.args.get('projectNumber')): projectNumber = request.args.get('projectNumber')
else:
if(request.args.get('controls').find("14")>-1):return Response ("projectNumber parameter not set for Control 14", status=400)
else: projectNumber = ""
if(request.args.get('assetsScope')):
if request.args.get('assetsScope').upper()=="FALSE": assetsScope= False
else: assetsScope = True
else: assetsScope = True
if(request.args.get('controls')): controls = request.args.get('controls')
else: controls="all"
uuid_str = str(uuid.uuid4())
report_metadata = {"uuid":uuid_str,"Controls":controls}
generateReport(orgId,projectId,topicProjectId,topic,report_metadata,projectNumber,assetsScope, controls)
return Response({"uuid":uuid_str,
"status":"RUNNING",
"organization_id": orgId,
"project_id":projectId,
"controls": controls,
"result_project":topicProjectId,
"result_topic":topic},
status=200)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))