Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/flaskr/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from flask import Flask
from flask import Flask, request
from flask_bootstrap import Bootstrap


Expand All @@ -10,4 +10,4 @@
bootstrap = Bootstrap(app)


from flaskr import routes
from flaskr import routes
72 changes: 50 additions & 22 deletions app/flaskr/routes.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
import flask
from flaskr import app
from flaskr import forms
from flaskr import request

import logging

import config
import ipmitools

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])

@app.route("/", methods=["GET", "POST"])
@app.route("/index", methods=["GET", "POST"])
def index():
control_form = forms.Fanspeed_Form()
control_form = forms.Fanspeed_Form()

if control_form.validate_on_submit():
if None in [config.IPMI_HOST, config.IPMI_USER, config.IPMI_PASS]:
logging.error("UPDATE FAILED: A required enviroment variable has not been set.")
flask.flash("A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?")
logging.error(
"UPDATE FAILED: A required enviroment variable has not been set."
)
flask.flash(
"A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?"
)

elif config.MANUAL_MODE is False:
logging.error("UPDATE FAILED: Cannot control fan speed in auto mode.")
Expand All @@ -26,12 +32,11 @@ def index():
flask.flash(result or f"Fans set to {control_form.speed.data}%")

return flask.render_template(
'index.html',
MANUAL_MODE=config.MANUAL_MODE,
form=control_form
"index.html", MANUAL_MODE=config.MANUAL_MODE, form=control_form
)

@app.route('/configure', methods=['GET', 'POST'])

@app.route("/configure", methods=["GET", "POST"])
def configure():
configure_form = forms.Configure_Form()

Expand All @@ -41,16 +46,18 @@ def configure():
config.IPMI_PASS = configure_form.passwd.data or config.IPMI_PASS
flask.flash("Config Updated")

return flask.render_template(
'configure.html',
form=configure_form
)
return flask.render_template("configure.html", form=configure_form)

@app.route('/set_manual_mode')

@app.route("/set_manual_mode")
def set_manual_mode():
if None in [config.IPMI_HOST, config.IPMI_USER, config.IPMI_PASS]:
logging.error("MANUAL MODE NOT SET: A required enviroment variable has not been set.")
flask.flash("A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?")
logging.error(
"MANUAL MODE NOT SET: A required enviroment variable has not been set."
)
flask.flash(
"A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?"
)

else:
result = ipmitools.set_manual_mode()
Expand All @@ -59,14 +66,18 @@ def set_manual_mode():
if not result:
config.MANUAL_MODE = True

return flask.redirect(flask.url_for('configure'))
return flask.redirect(flask.url_for("configure"))


@app.route('/set_auto_mode')
@app.route("/set_auto_mode")
def set_auto_mode():
if None in [config.IPMI_HOST, config.IPMI_USER, config.IPMI_PASS]:
logging.error("AUTOMATIC MODE NOT SET: A required enviroment variable has not been set.")
flask.flash("A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?")
logging.error(
"AUTOMATIC MODE NOT SET: A required enviroment variable has not been set."
)
flask.flash(
"A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?"
)

else:
result = ipmitools.set_auto_mode()
Expand All @@ -75,4 +86,21 @@ def set_auto_mode():
if not result:
config.MANUAL_MODE = False

return flask.redirect(flask.url_for('configure'))
return flask.redirect(flask.url_for("configure"))


@app.route("/set_fan_speeds")
def set_fan_speeds():
percent = request.args.get("percent", default="99")
if None in [config.IPMI_HOST, config.IPMI_USER, config.IPMI_PASS]:
logging.error("UPDATE FAILED: A required enviroment variable has not been set.")
flask.flash(
"A required enviroment variable has not been set. Have you supplied your IPMI username, password, and host in the configure page?"
)
elif config.MANUAL_MODE is False:
logging.error("UPDATE FAILED: Cannot control fan speed in auto mode.")
flask.flash("Fan speed cannot be controlled. Enable manual control mode.")
else:
ipmitools.set_fan_speed(percent)
flask.flash(f"Fans set to {percent}%")
return flask.redirect(flask.url_for("index"))