missing file extension will yield incomplete beacon WEB page
In case you create a new file that does not end with .yml or .py (possible, since no check), the next start of the beacon-server (and its associated Web server will create a problem).
Here is the error from the beacon-server in case you have a file that does not end in .yml or .py:
172.24.8.135 - - [2017-02-17 15:37:01] "GET /tree/items HTTP/1.1" 200 534 0.000563
Traceback (most recent call last):
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1994, in __call__
return self.wsgi_app(environ, start_response)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/bliss/config/conductor/web/config_app.py", line 412, in tree
result = __config.tree_files
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/bliss/config/conductor/web/config_app.py", line 96, in tree_files
self.__tree_files = self.__build_tree_files()
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/bliss/config/conductor/web/config_app.py", line 202, in __build_tree_files
self.__build_tree_files__(src, dst)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/bliss/config/conductor/web/config_app.py", line 242, in __build_tree_files__
ext_info = self.get_file_info(name)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/bliss/config/conductor/web/config_app.py", line 39, in wrapper
return f(self, *args, **kwargs)
File "/mntdirect/_bliss/users/ohlsson/.local/share/virtualenvs/bliss/lib/python2.7/site-packages/bliss/config/conductor/web/config_app.py", line 252, in get_file_info
ext = file_name.rsplit(os.path.extsep, 1)[1]
IndexError: list index out of range
This is due to /tree/items in the flask server that needs to be of type .py or .yml (If I read the file config_app.py in bliss/config/conductor/web correctly).
Here is a new version of function add_file in config_app (to be adapted to flask since the type="error" is not visible at all !!!):
@web_app.route("/add_file", methods=["POST"])
def add_file():
cfg = __config.get_config()
filename = flask.request.form['file']
# check that the file ends in .yml
_,file_extension = os.path.splitext(filename)
if file_extension == ".yml":
node = static.Node(cfg, filename=filename)
node.save()
return flask.json.dumps(dict(message="File created!", type="success"))
else:
return flask.json.dumps(dict(message="File must end with .yml. File not created!", type="error"))
Edited by Holger Witsch