Upgrading VISA from Version 2.X to 3.X#
[18/11/2024]
In 2024 VISA was redevelopped to run using the Quarkus framework (migrating from Dropwizard). While attempting to maintain backward compatibility with the previous version of VISA some minor changes to the deployment are necessary when doing the upgrade.
Environment variable changes#
File Logging#
The following changes are needed if you want to specifically save the application log in a file.
VISA_LOGGING_FILE_ENABLEDNew. You can now explicitly activate/deactivate the file logging. By default it is activated.
VISA_LOGGING_FILE_MAX_FILE_SIZEUpdated. Format has changed from (eg)
100MBto100MVISA_LOGGING_FILE_FORMATUpdated. The format pattern has changed. See the Quarkus documentation for full details. An example of the changes is shown below.
Old format:
%d{yyyy-MM-dd HH:mm:ss.SSS,CET} %-5level [%-40.40logger{10}] - %msg%nNew format:
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%-40.40c{3.}] - %s%e%n
Syslog configuration#
The following changes are needed for syslog setup.
VISA_LOGGING_SYSLOG_ENABLEDNew. You can now explicitly activate/deactivate the syslog logging. By default it is activated.
VISA_LOGGING_SYSLOG_HOSTDeprecated. See
VISA_LOGGING_SYSLOG_ENDPOINTfor the replacement.VISA_LOGGING_SYSLOG_PORTDeprecated. See
VISA_LOGGING_SYSLOG_ENDPOINTfor the replacement.VISA_LOGGING_SYSLOG_ENDPOINTNew. To configure the syslog server you now need to specify both the host and the port together, eg
mysyslog.server.org:514VISA_LOGGING_SYSLOG_APP_NAMENew. You must specify the application name as registered by syslog.
VISA_LOGGING_SYSLOG_TYPENew. Defines the syslog protocol. Defaults to
rfc3164but can also berfc5424.VISA_LOGGING_SYSLOG_FACILTYUpdated. The syslog facilty values have chanegd. For example
local0becomeslocal-use-0. See the Quarkus documentation for more details.
Email notification of errors#
VISA provides the capability of sending emails (to the dev team for example) when errors occur.
VISA_LOGGING_EMAIL_APPENDER_ENABLEDNew. You can now explicitly activate/deactivate the email notifications. By default they are deactivated.
VISA_LOGGING_EMAIL_SUBJECTUpdated. Previously each individual error produced an email and the error was used injected into the
VISA_LOGGING_EMAIL_SUBJECTtemplate. Now theVISA_LOGGING_EMAIL_SUBJECTis simply a prefix to an email subject. For example[VISA]: An error occurred %logger{20} - %msgis now simply[VISA]: Error report
General#
VISA_LOGGING_TIMEZONEDeprecated. Previously it was possible to set a logging timezone for all loggers. This is no longer possible and must be set in individual log formats.
Reverse proxy changes#
A couple of changes have been made to the backend endpoints, namely for GraphQL and websockets. If you use reverse proxy (eg Nginx) to redirect trafic arriving on certain endpoints then you will need to update your configuration. Below we give examples of the new configuration for Nginx.
GraphQL#
Previously GraphQL calls arrived to the /graphql endpoint. With Quarkus this has had to be changed to /api/graphql. As such you no longer need to explicitly manage this (as it should already be managed by a /api configuration). If you have an entry such as
location /graphql {
proxy_pass http://api:8086/graphql;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
you can now delete this.
Websockets#
Previously Socket.io was used for remote desktop communication. Now a standard websocket is used and with Quarkus the endpoint is now with a base path of /api/ws. In fact 2 principal websockets are opened with this base path. Unlike Socket.io, no rewrite rule is needed either.
The websockets managed by the api-server are now configured with the following Nginx configuration:
# New websocket connections configuration
location /api/ws {
proxy_pass http://api:8086/api/ws;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
Previous configs on the old endpoint, such as
# Old socket.io connections configuration
location /ws/vdi {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://api:8087/socket.io;
}
can be deleted.
Websocket server port#
Note that there is another difference for the api-server websockets: they are now exposed on the port 8086, the same as the api-server REST API.
You no longer need to explicity expose the legacy port 8087.
PostgreSQL version#
The minimum version of PostgreSQL is currently 9.6 but shortly this will be increased to 12.0. Quarkus officially only supports versions of 12.0 and above but the current version of VISA still works with 9.6.
Please update your database version accordingly.
Docker Container Registry#
The new Docker containers for VISA are now available on the GitHub Container Register (ghcr.io):
visa-api-server: ghcr.io/illgrenoble/visa-api-server
visa-web: ghcr.io/illgrenoble/visa-web
visa-accounts: ghcr.io/illgrenoble/visa-accounts
visa-jupyter-proxy: ghcr.io/illgrenoble/visa-jupyter-proxy
Dockerhub currently still has the same Docker images but will be deprecated shortly and more recent versions of VISA images may not be available.
Upgrade procedure#
The upgrade of VISA has no non-reversible impacts on the database so rolling back to 2.X versions is simple. We do however recommend saving copies of the environment variable files and any Nginx (or equivalent) configuration files.
Once modifications (outlined above) to the environment variables and Nginx configuration files are done then the process of updating the Docker image versions is trivial.
Version Rollback#
To revert to the 2.X version, please replace your copied environment variables file and Nginx configuration and change to the latest 2.X version of VISA.
Database changes to the 3.X version are trivial and do not impact the 2.X version.