-
Notifications
You must be signed in to change notification settings - Fork 0
home
qed exposes science apps via a public server and a server that internally faces the EPA.
These federal servers use the Trusted Internet Connection (TIC) reference architecture. The parent repository for this project is hosted at the USEPA github repository; this repo is a submodule to the USEPA QED github repo.
qed contains the source code for a number of EPA software applications that are integrated into a web deployment. The qed repository is the most critical repository in this deployment. It contains over 20 git submodules that control the networking setup, the container deployment, the front end web applications, the back end science services deployed within our virtual machine environment as well as connections to a number of other publicly available services. Details on how to deploy qed on the server and locally for development are provided on the dev workflows link.
The docker environment is deployed on virtual machines hosted by cgifederal. We are currently running 4 Red Hat Enterprise Linux 7.2 and 4 Windows Server 2012 instances. QED is deployed on 2 of the red hat servers (one public and one limited to the EPA intranet). Updates are done using the methods described in the dev workflows wiki page on this site. Deployment is also partially automated through the use of private ansible repository scripts.
The docker deployment is orchestrated by the docker-compose.yml file that is located in the qed repository. This file kicks off a series of debian linux-based docker image builds/downloads to create the different containers and the network connections on the qed server. In addition, these services can connect to other servers on the CGI, EPA and public networks. These containers comprise the major elements of the qed technology stack and are summarized in this table that has a mix of official docker images (nginx, python, node, redis) and docker images we manage.
purpose | repo | branches | dockerfile | image | builds |
---|---|---|---|---|---|
nginx official | nginx | NA | NA | nginx | NA |
nginx | qed_nginx | qed_nginx | qed_nginx | qed_nginx | qed_nginx |
python official | python | NA | NA | python | NA |
python | qed_py3 | qed_py3 | qed_py3 | qed_py3 | qed_py3 |
python packages | requirements_qed | requirements_qed | requirements_qed | NA | NA |
django | qed | qed | qed | qed | qed |
flask | flask_qed | flask_qed | flask_qed | flask_qed | qed |
node official | node | NA | NA | node | NA |
node | node_qed | node_qed | node_qed | node_qed | node_qed |
redis official | redis | NA | NA | redis | NA |
celery | celery_qed | celery_qed | celery_qed | celery_qed | celery_qed |
Once the build process is complete, the qed docker file initiates the docker_start.sh shell script which runs uwsgi with the uwsgi.ini configuration file and the wsgi_docker.py file. This process starts uwsgi, which serves as the http router that binds python wsgi to our web server -- nginx.
Once the docker environment is created on the server, requests are handled by nginx and routed to either django or flask depending on the call. The nginx configuration file specifies how this traffic is initially routed when requests hit the server.
The qed repository contains the main django web application and a number of science-based apps. The sequence of python code and service that run in django include
repo | branches | travis | codacy | code climate | landscape |
---|---|---|---|---|---|
qed | qed | ||||
static_qed | static_qed | NA | NA | ||
templates_qed | templates_qed | NA | NA | ||
qed_cts | qed_cts | NA | |||
qed_cyan | qed_cyan | NA | |||
qed_hem | qed_hem | NA | |||
qed_hms | qed_hms | NA | |||
qed_hwbi | qed_hwbi | NA | |||
qed_pisces | qed_pisces | NA | |||
qed_splash | qed_splash | NA | |||
qed_pram | qed_pram | NA | |||
qed_wqt | qed_wqt | NA | NA |
repo | branches | travis | codacy | code climate | landscape |
---|---|---|---|---|---|
cts_app | cts_app | NA | |||
cyan_app | cyan_app | NA | |||
hem_app | hem_app | NA | |||
hms_app | hms_app | NA | |||
hwbi_app | hwbi_app | NA | |||
pisces_app | pisces_app | NA | |||
splash_app | splash_app | NA | |||
pram_app | pram_app | NA | |||
wqt_app | wqt_app | NA |
repo | branches | travis | codacy | code climate |
---|---|---|---|---|
cts_calcs | cts_calcs | NA | ||
hms_backend | hms_backend | NA | ||
pram_qaqc_reports | pram_qaqc_reports | NA | ||
sam | sam | NA | ||
ubertool | ubertool | NA |
repo | branches | travis | codacy | code climate |
---|---|---|---|---|
cts_api | cts_api | NA | ||
cts_celery | cts_celery | NA | ||
cts_channels | cts_channels | NA | ||
cts_nodejs | cts_nodejs | NA | ||
cts_stress | cts_stress | NA | NA | |
cts_testing | cts_testing | NA | ||
flask_qed | flask_qed | NA | ||
hms_flask | hms_flask | NA | ||
pram_flask | pram_flask | NA | ||
qed_smoketests | qed_smoketests | NA | NA | |
temp_config | temp_config | NA | NA |