Skip to content

Commit

Permalink
bugy#215 added printing of server version on startup and web ui
Browse files Browse the repository at this point in the history
  • Loading branch information
bugy committed Jun 17, 2019
1 parent e5bf2aa commit 54a23cd
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 12 deletions.
10 changes: 8 additions & 2 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,10 @@ def get_secret(temp_folder):


def main():
project_path = os.getcwd()

try:
tool_utils.validate_web_build_exists(os.getcwd())
tool_utils.validate_web_build_exists(project_path)
except InvalidWebBuildException as e:
print(str(e))
sys.exit(-1)
Expand All @@ -66,6 +68,9 @@ def main():

logging.config.dictConfig(log_config)

server_version = tool_utils.get_server_version(project_path)
logging.info('Starting Script Server' + (', v' + server_version if server_version else ' (custom version)'))

file_utils.prepare_folder(CONFIG_FOLDER)
file_utils.prepare_folder(TEMP_FOLDER)

Expand Down Expand Up @@ -122,7 +127,8 @@ def main():
alerts_service,
file_upload_feature,
file_download_feature,
secret)
secret,
server_version)


if __name__ == '__main__':
Expand Down
5 changes: 3 additions & 2 deletions src/model/external_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,9 @@ def to_execution_info(request_parameters):
return info


def server_conf_to_external(server_config):
def server_conf_to_external(server_config, server_version):
return {
'title': server_config.title,
'enableScriptTitles': server_config.enable_script_titles
'enableScriptTitles': server_config.enable_script_titles,
'version': server_version
}
6 changes: 4 additions & 2 deletions src/tests/external_model_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,15 +149,17 @@ def test_full_config(self):
config.title = 'test title'
config.enable_script_titles = False

external_config = server_conf_to_external(config)
external_config = server_conf_to_external(config, '1.14.0')
self.assertEqual('test title', external_config.get('title'))
self.assertIs(False, external_config.get('enableScriptTitles'))
self.assertIs('1.14.0', external_config.get('version'))

def test_config_with_none_values(self):
config = ServerConfig()
config.title = None
config.enable_script_titles = None

external_config = server_conf_to_external(config)
external_config = server_conf_to_external(config, None)
self.assertIsNone(external_config.get('title'))
self.assertIsNone(external_config.get('enableScriptTitles'))
self.assertIsNone(external_config.get('version'))
Empty file added src/tests/utils/__init__.py
Empty file.
23 changes: 23 additions & 0 deletions src/tests/utils/tool_utils_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import unittest

from tests import test_utils
from utils.tool_utils import get_server_version


class TestGetVersion(unittest.TestCase):
def test_get_version_when_valid(self):
test_utils.create_file('version.txt', text='1.14.0')
version = get_server_version(test_utils.temp_folder)
self.assertEqual('1.14.0', version)

def test_get_version_when_no_file(self):
version = get_server_version(test_utils.temp_folder)
self.assertIsNone(version)

def test_get_version_when_no_content(self):
test_utils.create_file('my_file.txt', text='')
version = get_server_version(test_utils.temp_folder)
self.assertIsNone(version)

def tearDown(self):
test_utils.cleanup()
13 changes: 13 additions & 0 deletions src/utils/tool_utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import os

from utils import file_utils


def validate_web_build_exists(project_path):
web_folder = os.path.join(project_path, 'web')
Expand All @@ -19,5 +21,16 @@ def validate_web_build_exists(project_path):
raise InvalidWebBuildException('web folder is invalid. \n' + how_to_fix_build_message)


def get_server_version(project_path):
version_file = os.path.join(project_path, 'version.txt')
if not os.path.exists(version_file):
return None

file_content = file_utils.read_file(version_file).strip()
if not file_content:
return None
return file_content


class InvalidWebBuildException(Exception):
pass
8 changes: 6 additions & 2 deletions src/web/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,9 @@ def set_default_headers(self):

class GetServerConf(BaseRequestHandler):
def get(self):
self.write(external_model.server_conf_to_external(self.application.server_config))
self.write(external_model.server_conf_to_external(
self.application.server_config,
self.application.server_version))


class GetScripts(BaseRequestHandler):
Expand Down Expand Up @@ -772,7 +774,8 @@ def init(server_config: ServerConfig,
alerts_service: AlertsService,
file_upload_feature: FileUploadFeature,
file_download_feature: FileDownloadFeature,
secret):
secret,
server_version):
ssl_context = None
if server_config.is_ssl():
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
Expand Down Expand Up @@ -825,6 +828,7 @@ def init(server_config: ServerConfig,
application.auth = auth

application.server_config = server_config
application.server_version = server_version
application.authorizer = authorizer
application.downloads_folder = downloads_folder
application.file_download_feature = file_download_feature
Expand Down
2 changes: 2 additions & 0 deletions tools/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,5 @@ def create_version_file():
zip = zipfile.ZipFile(os.path.join(BUILD_FOLDER, 'script-server.zip'), 'w', zipfile.ZIP_DEFLATED)
for file in build_info.get_files():
zip.write(file)

os.remove(VERSION_FILE)
3 changes: 2 additions & 1 deletion web-src/css/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ body {

#serverHeader {
flex-grow: 1;
margin-left: 0.4rem;
}

#searchField {
Expand Down Expand Up @@ -165,7 +166,7 @@ body {
}

#logoutButton {
margin: 0 10px;
margin-left: 10px;
}

#content-panel {
Expand Down
2 changes: 1 addition & 1 deletion web-src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<div id="scriptsPanel">
<div id="scriptsList">
<div id="listHeader">
<h2 class="header" id="serverHeader">Script server</h2>
<h3 class="header" id="serverHeader">Script server</h3>

<div id="searchPanel" class="collapsed">
<input type="search" id="searchField" name="searchField" autocomplete="off"
Expand Down
10 changes: 8 additions & 2 deletions web-src/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import {
hasClass,
hide,
HttpRequestError,
HttpUnauthorizedError, isEmptyArray,
HttpUnauthorizedError,
isEmptyArray,
isEmptyObject,
isNull,
logError,
Expand All @@ -17,9 +18,9 @@ import {
removeElements,
show
} from './common';
import {setDefaultFavicon, setExecutingFavicon, setFinishedFavicon} from './components/favicon/favicon_manager';

import './connections/rxWebsocket.js';
import {setDefaultFavicon, setExecutingFavicon, setFinishedFavicon} from './components/favicon/favicon_manager';
import {ScriptController} from './script/script-controller';
import {restoreExecutor} from './script/script-execution-model';
import './style_imports.js';
Expand All @@ -42,6 +43,11 @@ function onLoad() {
}
enableScriptTitles = isNull(config.enableScriptTitles) || config.enableScriptTitles;
updateTitle();

if (!isNull(config.version)) {
const header = document.getElementById('serverHeader');
header.title = 'v' + config.version;
}
});
scriptSelectionListeners.push(updateTitle);

Expand Down

0 comments on commit 54a23cd

Please sign in to comment.