Skip to content

Commit

Permalink
Merge branch 'changes/deprecate_expert_apps' into 'master'
Browse files Browse the repository at this point in the history
Deprecate ExpertApplication and CO2Application

See merge request caimira/caimira!501
  • Loading branch information
andrejhenriques committed Jul 5, 2024
2 parents c54b37a + c5cbd23 commit a28b4d8
Show file tree
Hide file tree
Showing 19 changed files with 68 additions and 254 deletions.
27 changes: 23 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ The information also features a distribution diagram of licenses and a brief des
A risk assessment tool which simulates the airborne spread of the SARS-CoV-2 virus for space managers.


### CAiMIRA Expert App
### CAiMIRA Expert App and CO₂ App

A tool to interact with various parameters of the CAiMIRA model.

Expand Down Expand Up @@ -139,13 +139,32 @@ If any of the `.rst` files under the `caimira/docs` folder is changed, this comm

Then, right click on `caimira/docs/_build/html/index.html` and select `Open with` your preferred web browser.

### Running the CAiMIRA Expert-App app in development mode
### Running the CAiMIRA Expert-App or CO2-App apps in development mode

#### Disclaimer

The `ExpertApplication` and `CO2Application` are no longer actively maintained but will remain in the codebase for legacy purposes.
Please note that the functionality of these applications might be compromised due to deprecation issues.

#### Running the Applications

These applications only work within Jupyter notebooks. Attempting to run them outside of a Jupyter environment may result in errors or degraded functionality.

##### Prerequisites

Make sure you have the needed dependencies intalled:

```
voila caimira/apps/expert/caimira.ipynb --port=8080
pip install notebook jupyterlab
```

Then visit http://localhost:8080.
Running with Visual Studio Code (VSCode):

1. Ensure you have the following extensions installed in VSCode: `Jupyter` and `Python`.

2. Open VSCode and navigate to the directory containing the notebook.

3. Open the notebook (e.g. `caimira/apps/expert/caimira.ipynb`) and run the cells by clicking the `run` button next to each cell.

### Running the tests

Expand Down
2 changes: 0 additions & 2 deletions app-config/caimira-public-docker-image/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ COPY ./app-config/caimira-public-docker-image/run_caimira.sh /opt/caimira/start.
# To ensure that we have installed the full requirements, re-run the pip install.
# In the best case this will be a no-op.
RUN cd /opt/caimira/src/ && /opt/caimira/app/bin/pip install -r /opt/caimira/src/requirements.txt
RUN /opt/caimira/app/bin/jupyter trust /opt/caimira/src/caimira/apps/expert/*.ipynb
RUN /opt/caimira/app/bin/jupyter trust /opt/caimira/src/caimira/apps/expert_co2/*.ipynb
COPY ./app-config/caimira-public-docker-image/nginx.conf /opt/caimira/nginx.conf

EXPOSE 8080
Expand Down
12 changes: 0 additions & 12 deletions app-config/caimira-public-docker-image/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,6 @@ http {

large_client_header_buffers 4 16k;

location /voila-server/ {
proxy_pass http://localhost:8082/voila-server/;
}
rewrite ^/expert-app$ /voila-server/ last;
rewrite ^/(files/static)/(.*)$ /voila-server/voila/$1/$2 last;

location /co2-voila-server/ {
proxy_pass http://localhost:8083/co2-voila-server/;
}
rewrite ^/co2-app$ /voila-server/ last;
rewrite ^/(files/static)/(.*)$ /voila-server/voila/$1/$2 last;

location / {
proxy_pass http://localhost:8081;
}
Expand Down
11 changes: 0 additions & 11 deletions app-config/caimira-public-docker-image/run_caimira.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,6 @@ echo 'Please see https://gitlab.cern.ch/caimira/caimira for terms of use.'
# Run a proxy for the apps (listening on 8080).
nginx -c /opt/caimira/nginx.conf

# Run the expert app in the background.
cd /opt/caimira/src/caimira
/opt/caimira/app/bin/python -m voila /opt/caimira/src/caimira/apps/expert/caimira.ipynb \
--port=8082 --no-browser --base_url=/voila-server/ \
--Voila.tornado_settings 'allow_origin=*' \
>> /var/log/expert-app.log 2>&1 &

/opt/caimira/app/bin/python -m voila /opt/caimira/src/caimira/apps/expert_co2/caimira.ipynb \
--port=8083 --no-browser --base_url=/co2-voila-server/ \
--Voila.tornado_settings 'allow_origin=*' \
>> /var/log/co2-app.log 2>&1 &

# Run the calculator in the foreground.
/opt/caimira/app/bin/python -m caimira.apps.calculator --port 8081 --no-debug
7 changes: 1 addition & 6 deletions app-config/calculator-app/app.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,7 @@ if [[ "$APP_NAME" == "calculator-app" ]]; then

echo "Starting the caimira webservice with: python -m caimira.apps.calculator ${args[@]}"
python -m caimira.apps.calculator "${args[@]}"
elif [[ "$APP_NAME" == "caimira-voila" ]]; then
echo "Starting the voila service"
voila caimira/apps/expert/ --port=8080 --no-browser --base_url=/voila-server/ --tornado_settings 'allow_origin=*'
elif [[ "$APP_NAME" == "caimira-co2-voila" ]]; then
echo "Starting the CO2 voila service"
voila caimira/apps/expert_co2/ --port=8080 --no-browser --base_url=/co2-voila-server/ --tornado_settings 'allow_origin=*'

else
echo "No APP_NAME specified"
exit 1
Expand Down
15 changes: 0 additions & 15 deletions app-config/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
version: "3.8"
services:
expert-app:
image: calculator-app
environment:
- APP_NAME=caimira-voila
user: ${CURRENT_UID:?"Please run as follows 'CURRENT_UID=$(id -u):$(id -g) docker-compose up'"}

expert-co2-app:
image: calculator-app
environment:
- APP_NAME=caimira-co2-voila
user: ${CURRENT_UID:?"Please run as follows 'CURRENT_UID=$(id -u):$(id -g) docker-compose up'"}

calculator-app:
image: calculator-app
Expand Down Expand Up @@ -54,10 +43,6 @@ services:
condition: service_started
calculator-open-app:
condition: service_started
expert-app:
condition: service_started
expert-co2-app:
condition: service_started
auth-service:
condition: service_started
user: ${CURRENT_UID}
38 changes: 1 addition & 37 deletions app-config/nginx/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -73,44 +73,8 @@ http {
proxy_pass http://calculator-app:8080/$request_uri;
}

location /voila-server/ {
proxy_intercept_errors on;

# Anything under voila-server or expert-app is authenticated.
auth_request /auth/probe;
error_page 401 = @error401;
error_page 404 = @proxy_404_error_handler;

# expert-app is the name of the voila server in each of docker-compose,
# caimira-test.web.cern.ch and caimira.web.cern.ch.
proxy_pass http://expert-app:8080/voila-server/;
}
rewrite ^/expert-app$ /voila-server/voila/render/caimira.ipynb last;
rewrite ^/(files/static)/(.*)$ /voila-server/voila/$1/$2 last;

# Before implementing the nginx router we could access /voila/render/caimira.ipynb.
# Redirect this (and all other) URLs to the new scheme.
# Redirect URLs to the new scheme.
absolute_redirect off;
rewrite ^/voila/(.*)$ /voila-server/voila/$1 redirect;

location /co2-voila-server/ {
proxy_intercept_errors on;

# Anything under voila-server or co2-app is authenticated.
auth_request /auth/probe;
error_page 401 = @error401;
error_page 404 = @proxy_404_error_handler;

# expert-co2-app is the name of the voila server in each of docker-compose,
# caimira-test.web.cern.ch and caimira.web.cern.ch.
proxy_pass http://expert-co2-app:8080/co2-voila-server/;
}
rewrite ^/co2-app$ /co2-voila-server/voila/render/caimira.ipynb last;
rewrite ^/(files/static)/(.*)$ /co2-voila-server/voila/$1/$2 last;

# Before implementing the nginx router we could access /voila/render/caimira.ipynb.
# Redirect this (and all other) URLs to the new scheme.
rewrite ^/voila/(.*)$ /co2-voila-server/voila/$1 redirect;

location / {
# By default we have no authentication.
Expand Down
114 changes: 0 additions & 114 deletions app-config/openshift/deploymentconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,120 +68,6 @@
kind: ImageStreamTag
name: 'auth-service:latest'
namespace: ${PROJECT_NAME}
-
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: expert-app
labels: {app: expert-app}
spec:
replicas: 1
template:
metadata:
labels:
app: expert-app
spec:
containers:
- name: calculator-app
env:
- name: APP_NAME
value: caimira-voila
image: '${PROJECT_NAME}/calculator-app'
ports:
- containerPort: 8080
protocol: TCP
imagePullPolicy: Always
resources:
limits: { cpu: '1', memory: 1Gi }
requests: { cpu: 1m, memory: 512Mi }
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: { }
terminationGracePeriodSeconds: 30
strategy:
activeDeadlineSeconds: 21600
resources: { }
rollingParams:
intervalSeconds: 1
maxSurge: 25%
maxUnavailable: 25%
timeoutSeconds: 600
updatePeriodSeconds: 1
type: Rolling
test: false
selector:
app: expert-app
triggers:
- type: ConfigChange
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- calculator-app
from:
kind: ImageStreamTag
name: 'calculator-app:latest'
namespace: ${PROJECT_NAME}
-
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: expert-co2-app
labels: {app: expert-co2-app}
spec:
replicas: 1
template:
metadata:
labels:
app: expert-co2-app
spec:
containers:
- name: calculator-app
env:
- name: APP_NAME
value: caimira-co2-voila
image: '${PROJECT_NAME}/calculator-app'
ports:
- containerPort: 8080
protocol: TCP
imagePullPolicy: Always
resources:
limits: { cpu: '1', memory: 1Gi }
requests: { cpu: 1m, memory: 512Mi }
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: { }
terminationGracePeriodSeconds: 30
strategy:
activeDeadlineSeconds: 21600
resources: { }
rollingParams:
intervalSeconds: 1
maxSurge: 25%
maxUnavailable: 25%
timeoutSeconds: 600
updatePeriodSeconds: 1
type: Rolling
test: false
selector:
app: expert-co2-app
triggers:
- type: ConfigChange
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- calculator-app
from:
kind: ImageStreamTag
name: 'calculator-app:latest'
namespace: ${PROJECT_NAME}
-
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
Expand Down
34 changes: 0 additions & 34 deletions app-config/openshift/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,40 +27,6 @@
deploymentconfig: auth-service
sessionAffinity: 'None'
type: 'ClusterIP'
-
apiVersion: v1
kind: Service
metadata:
labels:
app: expert-app
name: expert-app
spec:
ports:
- name: 8080-tcp
port: 8080
protocol: TCP
targetPort: 8080
selector:
deploymentconfig: expert-app
sessionAffinity: 'None'
type: 'ClusterIP'
-
apiVersion: v1
kind: Service
metadata:
labels:
app: expert-co2-app
name: expert-co2-app
spec:
ports:
- name: 8080-tcp
port: 8080
protocol: TCP
targetPort: 8080
selector:
deploymentconfig: expert-co2-app
sessionAffinity: 'None'
type: 'ClusterIP'
-
apiVersion: v1
kind: Service
Expand Down
5 changes: 4 additions & 1 deletion caimira/apps/calculator/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
# calculator version. If the calculator needs to make breaking changes (e.g. change
# form attributes) then it can also increase its MAJOR version without needing to
# increase the overall CAiMIRA version (found at ``caimira.__version__``).
__version__ = "4.15.3"
__version__ = "4.16.0"

LOG = logging.getLogger("Calculator")

Expand Down Expand Up @@ -517,6 +517,9 @@ def make_app(
(get_root_calculator_url(r'/user-guide'), GenericExtraPage, {
'active_page': 'calculator/user-guide',
'filename': 'userguide.html.j2'}),
(get_root_url(r'/expert-app'), GenericExtraPage, {
'active_page': 'expert-app',
'filename': 'expert-app.html.j2'}),
]

profiler_enabled = int(os.environ.get('CAIMIRA_PROFILER_ENABLED', 0))
Expand Down
7 changes: 7 additions & 0 deletions caimira/apps/expert.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,13 @@
import numpy as np
import datetime
import pandas as pd
import logging

from caimira import data, models, state
from caimira.store.data_registry import DataRegistry

LOG = logging.getLogger(__name__)


def collapsible(widgets_to_collapse: typing.List, title: str, start_collapsed=False):
collapsed = widgets.Accordion([widgets.VBox(widgets_to_collapse)])
Expand Down Expand Up @@ -929,6 +932,10 @@ def build_type__VentilationBase(self, _: dataclasses.Field):

class ExpertApplication(Controller):
def __init__(self) -> None:
LOG.warning(
"ExpertApplication is currently deactivated and will no longer be maintained. It remains in the codebase for legacy purposes."
)

self._data_registry = DataRegistry()
#: A list of scenario name and ModelState instances. This is intended to be
#: mutated. Any mutation should notify the appropriate Views for handling.
Expand Down
Loading

0 comments on commit a28b4d8

Please sign in to comment.