def run()

in app.py [0:0]


def run():
    app = Flask(__name__, static_url_path="", static_folder="frontend/public")
    app.json_encoder = PClusterJSONEncoder
    CORS(app)  # comment this on deployment
    api = Api(app)

    @app.before_request
    def authenticate_static():
        # Ensure we redirect to login on loading of index.html
        return authenticate("guest") if "index.html" in request.path else None

    @app.errorhandler(401)
    def custom_401(_error):
        return Response(
            "You are not authorized to perform this action.", 401, {"WWW-Authenticate": 'Basic realm="Login Required"'}
        )

    @app.route("/", defaults={"path": ""})
    @authenticated()
    def serve(path):
        return send_from_directory(app.static_folder, "index.html")

    @app.route("/manager/ec2_action", methods=["POST"])
    @authenticated()
    def ec2_action_():
        return ec2_action()

    @app.route("/manager/get_cluster_configuration")
    @authenticated()
    def get_cluster_config_():
        return get_cluster_config()

    @app.route("/manager/get_custom_image_configuration")
    @authenticated()
    def get_custom_image_config_():
        return get_custom_image_config()

    @app.route("/manager/get_aws_configuration")
    @authenticated()
    def get_aws_config_():
        return get_aws_config()

    @app.route("/manager/get_dcv_session")
    @authenticated()
    def get_dcv_session_():
        return get_dcv_session()

    @app.route("/manager/get_identity")
    @authenticated("guest")
    def get_identity_():
        return get_identity()

    @app.route("/manager/list_users")
    @authenticated("admin")
    def list_users_():
        return list_users()

    @app.route("/manager/set_user_role", methods=["PUT"])
    @authenticated("admin")
    def set_user_role_():
        return set_user_role()

    @app.route("/login")
    def login_():
        return login()

    @app.route("/logout")
    def logout_():
        return logout()

    api.add_resource(PclusterApiHandler, "/api")
    return app