Direkt zum Hauptinhalt

System Update

To install a newer version of an UPPS! Extension release, perform the following:

  1. Shut down Polarion.
  2. Remove the cip-alpha-upps folder of your existing installation in the Polarion extensions directory [POLARION_HOME]/polarion/extensions.
  3. Copy the cip-alpha-upps folder of this installation bundle into the Polarion extensions directory [POLARION_HOME]/polarion/extensions.
  4. Remove the .config folder at [POLARION_HOME]/data/workspace.
  5. Check Configuration Changes and implement the instructions applying to you.
  6. Start Polarion.

Configuration Changes

This section provides you with instructions on version-specific configuration changes that you need to implement when updating your UPPS!E version from a prior release. If you are skipping versions, ensure that all configuration changes of each intermediate version was also performed.

Version 1.11.0

Supports Polarion 2410

UPPS!E now supports Polarion 2410.

Required polarion.properties changes

Add following configuration to your polarion.properties file if you use Polarion 2410:

# Enable limited sql commands which are by default disabled in Polarion 2410 and are required by the UPPS! Extensions.
com.polarion.platform.sql.restrictedQueryCommandsLevel=NONE
SALT licensing support

UPPS!E now includes support for Polarion installations that are licensed with SALT. Be aware that due to technical challenges, the Grace Period granted by UPPS!E licenses is not supported with SALT licenses. Grace period is a timeframe where an UPPS!E license is still considered valid for 30 days. The grace period starts from the date where the license factor of a Polarion license is not covered by the license factor granted by the UPPS!E license. This usually occurs if Polarion is (re-)activated using a Polarion license with a higher license factor.

Version 1.10.1

Support dropped for Polarion releases older than 2304

Due to the changed Polarion development baseline for UPPS!E, only Polarion releases 2304 to 2404 are supported.

Intelligent Navigator feature "Navigation Optimizer" now experimental

Due to technical challenges in Polarion as well as the different browser behaviors, the Navigation Optimizer feature is now in experimental state. This leads to following user-observable changes:

  • The UPPS!E IN user configuration option Enable Navigation Optimizer is disabled by default for new users.
  • If a user made changes to the user configuration in earlier releases and the Navigation Optimizer feature was enabled, it will stay enabled for that user.
  • Information about the experimental state of this feature has been added to the the UPPS!E IN user configuration menu.

Version 1.8.1

License Monitor configuration changes

Configurations related to the UPPS!E feature License Monitor were changed to implement the ability to show peak stats of concurrent licenses as well as to improve performance and security. If you deployed the License Monitor using the configuration from a previous release, then you need to follow the instructions of all following four sections.

Make a backup
Before implementing any of the following configuration changes, create a backup of your database volume as the database structure will be updated.

How to create database backup
  • Using the cli, change into the directory where the docker-compose.yml file of your deployed directus is located.
  • Stop the containers via docker compose stop (docker compose v2) or docker-compose stop (docker compose v1).
  • Create a copy of the data directory.
  • You may start the containers with docker compose start or docker-compose start.

You can then simply restore the backup by stopping the containers and swap the data with your backup.

Update docker compose configuration

This release ships with an updated docker compose configuration implementing the following:

  • Make the PostgreSQL container accessible to Polarion.
  • Update the directus image version to the newest release, 10.8.2.
  • Make the port-forwarding configuration more secure by only allowing access from localhost.
  • Remove unnecessary volumes configuration as file uploads with directus are not in use by UPPS!E.
  • Add a default PUBLIC_URL value to suppress a warning message in the directus logs.
  • Rename environment variable from CACHE_REDIS to REDIS due to directus version update.

Implement the changes as follows in your docker-compose.yml file.

Show docker-compose.yml changes
 services:
   database:
     container_name: database
     image: 'postgis/postgis:13-master'
+    ports: 
+      - '127.0.0.1:5431:5432'
     ...
   directus:
     container_name: directus
-    image: directus/directus:9
+    image: directus/directus:10.8.2
     ports:
-      - '8055:8055'
+      - '127.0.0.1:8055:8055'
-    volumes: 
-      - './uploads:/directus/uploads'
     environment:
+      PUBLIC_URL: 'http://localhost:8055'
       TZ: ${TIMEZONE}
       ...
-      CACHE_REDIS: 'redis://cache:6379'
       REDIS: 'redis://cache:6379'

If you deploy your containers with different host/port configurations, adapt accordingly.

In the cli, change into the directory of your compose file and recreate containers via

docker compose v1
docker-compose down
docker-compose up -d
docker compose v2
docker compose down
docker compose up -d

Update database table structure

The database table structure will be updated via the directus API and requires a running directus container.

On the host that runs the directus container, create a file add-peak-column.js with following content.

Show add-peak-colum.js content
Show add-peak-colum.js content

/* Adapt according to your configuration */
const HOST = 'http://directus:8055';
const ADMIN_EMAIL = 'admin@directus.local.com';
const ADMIN_PASSWORD = 'your_password_here';

/* Do not change any of the following */
const LOGIN_URL = `${HOST}/auth/login`
const LM_HISTORY_DATA_COLLECTION_URL = `${HOST}/fields/lm_history_data`;
const LOGIN_REQUEST_DATA = { "email": ADMIN_EMAIL, "password": ADMIN_PASSWORD };
const CREATE_LM_HISTORY_DATA_FIELD_REQUEST_DATA = { "field": "peak", "type": "integer" };

async function fetchToken() {
    const tokenJsonPayload = await performJsonPost(LOGIN_URL, LOGIN_REQUEST_DATA);
    throwOnErrorsResponse(tokenJsonPayload);
    return tokenJsonPayload.data.access_token;
}

async function createLmHistoryDataField(token) {
    const creationResultJsonPayload = performJsonPost(
        LM_HISTORY_DATA_COLLECTION_URL,
        CREATE_LM_HISTORY_DATA_FIELD_REQUEST_DATA,
        { 'Authorization': `Bearer ${token}` }
    );
    throwOnErrorsResponse(creationResultJsonPayload);
}

async function performJsonPost(url, payload, headers = {}) {
    const mergedHeaders = Object.assign({ "Content-Type": "application/json" }, headers)
    const response = await fetch(url, {
        method: 'POST',
        headers: mergedHeaders,
        body: JSON.stringify(payload)
    });
    return response.json();
}

function throwOnErrorsResponse(payload) {
    if (payload?.errors) {
        const allErrorMessages = payload.errors.map(({ message }) => message ).join(",\n");
        throw new Error(allErrorMessages);
    }
}

async function run() {
    try {
        const token = await fetchToken();
        await createLmHistoryDataField(token);
        console.log("Successfully updated lm_history_data table");
    } catch(err) {
        console.error("Error(s) occurred during update attempt:", err.message);
    }
}

run();

Change the HOST, ADMIN_EMAIL and ADMIN_PASSWORD values according to your configuration if required. If you used the default provided configuration, the HOST and ADMIN_EMAIL require no change. The initial ADMIN_PASSWORD value is specified in the [DIRECTUS_FOLDER]/.env file.

Then, in the cli, change into the directory where the add-peak-column.js file was created and run following command.

Windows (Powershell)
docker run --rm --network container:directus -v .\add-peak-column.js:/add-peak-column.js node:20-alpine node /add-peak-column.js
Linux
docker run --rm --network container:directus -v "$(pwd)/add-peak-column.js:/add-peak-column.js" node:20-alpine node /add-peak-column.js

3. Update polarion properties configuration

Add following properties to your polarion.properties configuration.

eu.cipalpha.upps.licensemonitor.postgre.host=localhost:5431
eu.cipalpha.upps.licensemonitor.postgre.user=directus
eu.cipalpha.upps.licensemonitor.postgre.pw=sutcerid

If you deployed the database container with a different configuration, adapt your configuration accordingly. (Re-)Start Polarion to make the property changes effective.

4. Update license monitor scheduler configuration

The new default license monitor scheduler configuration is to trigger every 5 minutes in order to create a more precise statistical progression of license usage.

 <job
-  cronExpression="0 */20 * * * ?"
+  cronExpression="0 */5 * * * ?"
   disabled="false"
   id="upps.license.monitor.job"
   name="UPPS!E License Monitor Ticker"
   scope="system">
 </job>