in app.py [0:0]
def run():
app = utils.build_flask_app(__name__)
app.config["APPLICATION_ROOT"] = '/pcui'
app.json = PClusterJSONEncoder(app)
app.url_map.converters["regex"] = RegexConverter
CSRF(app, CognitoFingerprintGenerator(CLIENT_ID, CLIENT_SECRET, USER_POOL_ID))
@app.errorhandler(401)
def custom_401(_error):
return Response(
"You are not authorized to perform this action.", 401
)
@app.errorhandler(404)
def page_not_found(_error):
return utils.serve_frontend(app)
@app.route("/", defaults={"path": ""})
@app.route('/<path:path>')
def serve(path):
return utils.serve_frontend(app, path)
@app.route("/manager/ec2_action", methods=["POST"])
@authenticated(ADMINS_GROUP)
@csrf_needed
@validated(params=EC2Action)
def ec2_action_():
return ec2_action()
@app.route("/manager/get_cluster_configuration")
@authenticated(ADMINS_GROUP)
@validated(params=GetClusterConfig)
def get_cluster_config_():
return get_cluster_config()
@app.route("/manager/get_custom_image_configuration")
@authenticated(ADMINS_GROUP)
@validated(params=GetCustomImageConfig)
def get_custom_image_config_():
return get_custom_image_config()
@app.route("/manager/get_aws_configuration")
@authenticated(ADMINS_GROUP)
@validated(params=GetAwsConfig)
def get_aws_config_():
return get_aws_config()
@app.route("/manager/get_instance_types")
@authenticated(ADMINS_GROUP)
@validated(params=GetInstanceTypes)
def get_instance_types_():
return get_instance_types()
@app.route("/manager/get_dcv_session")
@authenticated(ADMINS_GROUP)
@validated(params=GetDcvSession)
def get_dcv_session_():
return get_dcv_session()
@app.route("/manager/get_identity")
@authenticated(ADMINS_GROUP)
def get_identity_():
return get_identity()
@app.route("/manager/get_version")
def get_version_():
return get_version()
@app.route("/manager/get_app_config")
def get_app_config_():
return get_app_config()
@app.route("/manager/list_users")
@authenticated(ADMINS_GROUP)
def list_users_():
return list_users()
@app.route("/manager/create_user", methods=["POST"])
@authenticated(ADMINS_GROUP)
@csrf_needed
@validated(body=CreateUser)
def create_user_():
return create_user()
@app.route("/manager/delete_user", methods=["DELETE"])
@authenticated(ADMINS_GROUP)
@csrf_needed
@validated(params=DeleteUser)
def delete_user_():
return delete_user()
@app.route("/manager/queue_status")
@authenticated(ADMINS_GROUP)
@validated(params=QueueStatus)
def queue_status_():
return queue_status()
@app.route("/manager/cancel_job")
@authenticated(ADMINS_GROUP)
@validated(params=CancelJob)
def cancel_job_():
return cancel_job()
@app.route("/manager/price_estimate")
@authenticated(ADMINS_GROUP)
@validated(params=PriceEstimate)
def price_estimate_():
return price_estimate()
@app.route("/manager/sacct", methods=["POST"])
@authenticated(ADMINS_GROUP)
@csrf_needed
@validated(params=Sacct)
def sacct_():
return sacct()
@app.route("/manager/scontrol_job")
@authenticated(ADMINS_GROUP)
@validated(params=ScontrolJob)
def scontrol_job_():
return scontrol_job()
@app.route("/login")
@validated(params=Login)
def login_():
return login()
@app.route("/logout")
def logout_():
return logout()
@app.route('/logs', methods=['POST'])
@authenticated(ADMINS_GROUP)
@csrf_needed
@validated(body=PushLog)
def push_log():
for entry in request.json['logs']:
level, message, extra = parse_log_entry(logger, entry)
push_log_entry(logger, level, message, extra)
return {}, 200
@app.route('/<regex("(home|clusters|users|configure|images).*"):base>', defaults={"base": ""})
def catch_all(base):
return utils.serve_frontend(app, base)
@app.route('/<regex("(home|clusters|users|configure|images).*"):base>/<path:u_path>', defaults={"base": "", "u_path": ""})
def catch_all2(base, u_path):
return utils.serve_frontend(app, base)
app.register_blueprint(pc, url_prefix='/api')
app.register_blueprint(costs, url_prefix='/cost-monitoring')
return app