PSLX frontend

PSLX supports a frontend UI for viewing proto and browsing containers. The implementation is based on Flask, and is in the folder. The frontend UI is made of three parts: 1. RPC health checker: The index page will show the connection to the RPC servers, including the instant messaging server, email server and container backend RPC server. 2. Proto Viewer: view the content in the proto. 3. Container Backend: the status of the containers and operators.

On example way of starting a container backend is at container_backend_example/server.py:

from pslx.micro_service.container_backend.rpc import ContainerBackendRPC
from pslx.micro_service.rpc.generic_server import GenericServer
from pslx.storage.partitioner_storage import MinutelyPartitionerStorage

if __name__ == "__main__":
    server_url = "localhost:11443"
    storage = MinutelyPartitionerStorage()
    storage.initialize_from_dir(dir_name="/galaxy/bb-d/pslx/test_data/storage")
    example_rpc = ContainerBackendRPC(rpc_storage=storage)
    example_server = GenericServer(server_name='example_backend')
    example_server.create_server(max_worker=1, server_url=server_url)
    example_server.bind_rpc(rpc=example_rpc)
    example_server.start_server()

To start the frontend, one needs to create a YAML file containing the settings. An example of it can be found at frontend_example/frontend_config.yaml:

CONTAINER_BACKEND_CONFIG:
  SERVER_URL: "localhost:11443"
  ROOT_CERTIFICATE_PATH: ""
USER_NAME: "guest"
PASSWORD: "guest"
GALAXY_VIEWER_URL: "http://192.168.1.112:8000"

The above user_name and password are the credentials used to login the frontend. In the second step, one needs to parse the yaml file into a FrontendConfig proto. One can follow this script defined in frontend_example/create_config.py:

from pslx.util.common_util import CommonUtil
from pslx.util.file_util import FileUtil


def main():
    yaml_path = "example/frontend_example/frontend_config.yaml"
    proto_path = "example/frontend_example/frontend_config.pb"
    config = CommonUtil.make_frontend_config(yaml_path=yaml_path)
    print(config)
    FileUtil.write_proto_to_file(proto=config, file_name=proto_path)


if __name__ == "__main__":
    main()

Finally, one can launch the backend by pointing PSLX_FRONTEND_CONFIG_PROTO_PATH to the proto with

from pslx.micro_service.frontend import pslx_frontend_ui_app

if __name__ == "__main__":
    pslx_frontend_ui_app.run(host='localhost', port=5001, debug=True)

The command is

PSLX_FRONTEND_CONFIG_PROTO_PATH=example/frontend_example/frontend_config.pb \
PYTHONPATH=. python example/frontend_example/run_frontend.py