IVAAP Helpers
IVAAP Deployment Operations Guide
ivaap-helpers
IVAAP 2025.1
Introduction¶
IVAAP Helpers is a public repository that includes many helpful aliases, functions, shortcuts and notes for managing IVAAP deployments! The “ivaap-helpers” repository also contains an “examples” directory containing sample configuration for a prometheus.yaml file and a .json Grafana dashboard for monitoring IVAAP cluster metrics.
Setup¶
IVAAP Helpers can be cloned anywhere you'd like on the file system where you will be managing IVAAP. What is important is ensure that the full path to the file ivaap-helpers/aliases/ivaap_k8s_aliases.sh is sourced in your ~/.bashrc.
cd ~
git clone "https://gerrit.int.com/ivaap-helpers"
edit ~/.bashrc
# Now that you’re in the editor, add where appropriate to load aliases:
source /path/to/ivaap-helpers/aliases/ivaap_k8s_aliases.sh
Quick Start Guide¶
One of the functions we have added is simply to run the command ivaap-helpers to get a print out of all aliases and functions, with a short description. This is essentially the man page for ivaap-helpers.
user@linux$ ivaap-helpers
Kubectl Shortcuts
---------------------------------------
ki <namespace> Shotcut for 'kubectl -n <namespace> - can be used for all kubectl commands
ki exec <namespace> <pod> <container> Shell into a pod with fuzzy search on pod name. Ex: 'ki exec ivaap backend playnode'
Quick Directory Access
---------------------------------------
cdir cd to ivaap directory
vdir cd to ivaap-volumes directory
ldir cd to ivaap-volumes/logs directory
IVAAP Health
---------------------------------------
ibhealth <namespace> check health API for backend nodes
wibhealth <namespace> watch health API as backend nodes come up after restart
IVAAP Logging
---------------------------------------
adminserver.logs <namespace> View adminserver logs with command 'less'
activemq.logs <namespace> View activemq logs with command 'less'
proxy.logs <namespace> View proxy logs with command 'less'
backend.logs <namespace> <container-name> View backend logs with command 'less'
IVAAP Metadata
---------------------------------------
icvt <namespace> Print version tags for image creation
IVAAP Database
---------------------------------------
encryptZalandoPGPassword <namespace> Encrypt ivaapserver PostgreSQL user's password.
ivaap_pgdump <namespace> Create postgres dump of IVAAP database
IVAAP Deployment Debugging
---------------------------------------
aailogs Create tarball of all logs in ivaap-volumes/logs
ailogs Create tarball of last 7 days of logs in ivaap-volumes/logs
IVAAP DevOps Administration
---------------------------------------
iastrust <namespace> Show circle of trust challenge and session tokens
iasabout <namespace> Show Adminserver about API
ibmetrics <namespace> Show ivaap backend metrics
ibabout <namespace> Show ivaap backend about
3rd Party Tools
---------------------------------------
installyq Install yq on the host
installjq Install jq on the host
Walkthrough¶
Kubectl shortcuts¶
ki¶
The alias ki is our shortcut for the kubectl command.
user@linux:~$ ki
Error: Namespace argument is required.
Usage: ki <namespace>
ki, just provide the namespace as an argument, then continue adding additional kubectl arguments, such as get pods, get nodes, describe pod <podname, etc. So for example: kubectl -n ivaap get pods is the same as ki ivaap get pods
user@linux:~$ ki ivaap get pods
NAME READY STATUS RESTARTS AGE
adminserver-deployment-767cfcd75f-z7v4m 1/1 Running 0 3d14h
dozzle-5bf7b7bdf-lsxsr 1/1 Running 0 47h
ivaap-activemq-deployment-7855b985c5-25c2c 1/1 Running 0 3d14h
ivaap-admin-deployment-6bbb755b9c-6f9wm 1/1 Running 0 3d14h
ivaap-backend-deployment-865db7d9fb-vsvrb 8/8 Running 0 47h
ivaap-dashboard-deployment-8478559c56-wq9pq 1/1 Running 0 3d14h
ivaap-dashboard-publish-deployment-7546c9559d-sbwgl 1/1 Running 0 3d14h
ivaap-proxy-deployment-6ddc7df6db-c2h7q 1/1 Running 0 3d14h
Other examples:
* ki <namespace> logs <podname>
* ki <namespace> describe pod <podname>
* ki <namespace> get nodes
* ki <namespace> get ing
* ki <namespace> describe ing
* ki <namespace> get secrets
* ki <namespace> describe secret <secretname>
* ki <namespace> get configmap
* ki <namespace> describe configmap
* ki <namespace> get configmap <configmap_name> -o yaml
As you can see, this can work with any possible kubectl command, but this way is much easier than typing kubectl -n <namespace> each time.
Tip
For easier readability, any kubernetes command can be piped into less. This is particularly useful for long outputs where you may need to search for a keyword.
Example: ki <namespace> logs <podname> | less
ki exec¶
user@linux:~$ ki exec
Usage: ki exec <namespace> <fuzzy-pod-name> [container-name]
The ki exec function is likely one of the most useful shortcuts in ivaap-helpers. This function is a smart shortcut for kubectl exec, allowing the user to quickly shell into a pod/container using fuzzy searches. Below is an example of how to normally shell into our adminserver pod using standard kubectl command:
user@linux:~$ kubectl exec -n ivaap -it adminserver-deployment-767cfcd75f-z7v4m -- /bin/bash
adminserver-deployment-767cfcd75f-z7v4m:/opt/ivaap/adminserver$
ki exec:
user@linux:~$ ki exec ivaap adminserver
adminserver-deployment-767cfcd75f-z7v4m:/opt/ivaap/adminserver$
user@linux:~$ ki exec ivaap backend opensdublobstorager3node
ubuntu@ivaap-backend-deployment-865db7d9fb-vsvrb:/opt/ivaap/ivaap-playserver/deployment$
Without ivaap-helpers, this command would have been:
user@linux:~$ kubectl exec -n ivaap -it ivaap-backend-deployment-865db7d9fb-vsvrb -c opensdublobstorager3node -- /bin/bash
ubuntu@ivaap-backend-deployment-865db7d9fb-vsvrb:/opt/ivaap/ivaap-playserver/deployment$
Quick Directory Access (K3s Only)¶
The aliases under this section are specific to K3s single-server deployments only. These are not applicable to any other kubernetes deployment.
cdir¶
The cdir function navigates you to the deployment directory in /opt/ivaap.
user@linux:~$ cdir
user@linux:/opt/ivaap$ ls
IVAAPHelmTemplate backups certs ivaap-helpers ivaap-volumes
vdir¶
The vdir alias navigates you to the ivaap-volumes directory where persisted data reside, such as logs and geofiles data.
user@linux:~$ vdir
user@linux:/opt/ivaap/ivaap-volumes$ ls
geofiles logs postgres-operator
ldir¶
The ldir alias navigates you to the ivaap-volumes/logs directory where K3s logs reside.
user@linux:~$ ldir
user@linux:/opt/ivaap/ivaap-volumes/logs$ ls
activemq adminserver backend proxy scheduledtasks
IVAAP Health¶
ibhealth¶
The ibhealth function shows the current status of the backend Pekko cluster's health API. The syntax is ibhealth <namespace>:
user@linux:~$ ibhealth ivaap
{
"timestamp" : 1755623515665,
"health" : "healthy",
"available" : "admin,blobstorage,cloudstorage,dataimport,epsg,geofiles,geofiles::reservoirs,geofiles::seismic,messaging,mongo,mqgateway,ppdm,s3,witsml",
"activeMQConnectionStatus" : {
"healthy" : true
}
}
wibhealth¶
The wibhealth function is the same as ibhealth, but it watches the status and shows it continuously updated every 3 seconds. This function continues to run until the user stops it with Ctrl+C. The syntax is wibhealth <namespace>.
IVAAP Logging¶
IVAAP Logging
---------------------------------------
adminserver.logs <namespace> View adminserver logs with command 'less'
activemq.logs <namespace> View activemq logs with command 'less'
proxy.logs <namespace> View proxy logs with command 'less'
backend.logs <namespace> <container-name> View backend logs with command 'less'
New shortcuts have been added for easily viewing logs for IVAAP components. For each of these functions, just provide the namespace as an argument. This will open the logs for the specified pod in less to allow for easy navigation, searching, and readability of the logs.
For the backend pod, two arguments are expeted - namespace and container name.
These functions can also be used to easily save logs onto the file system to save for later or share with other team members.
user@linux:~$ adminserver.logs ivaap > adminserver_2025-12-17.log
user@linux:~$ ls
adminserver_2025-12-17.log
IVAAP Metadata¶
icvt¶
The icvt function stands for IVAAP Container Versioned Tags, and will print a list of all of the currently deployed versioned tags. This scrapes through all IVAAP container metadata. The syntax is icvt <namespace>
user@linux:~$ icvt ivaap
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/adminserver:adminserver-3.0.42-569ce02-eclipse-temurin-21-jdk-alpine-202506262109Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/activemq:activemq-6.1.7-96e1cba9-202506251620Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/admin-client:ivaap_admin-3.0.2-dev2
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/adminnode:adminnode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/epsgnode:epsgnode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/messagingnode:messagingnode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/mqgatewaynode:mqgatewaynode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/playnode:playnode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/seednode:seednode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/blobstoragenode:blobstoragenode-3.0-3-bb04d54-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/cloudstoragenode:cloudstoragenode-3.0-3-fd24b41-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/dataimportnode:dataimportnode-3.0-3-0af410b-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/geofilesmasternode:geofilesmasternode-3.0-2-f38d7a2-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/geofilesreservoirsnode:geofilesreservoirsnode-3.0-2-f38d7a2-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/geofilesseismicnode:geofilesseismicnode-3.0-2-f38d7a2-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/mongonode:mongonode-3.0-6-77b1f74-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/ppdmnode:ppdmnode-3.0-4-5fcc873-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/s3node:s3node-3.0-4-7b59464-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/witsmlnode:witsmlnode-3.0-1-c2f557d-20250708T223606Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-3.4.0
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-3.4.0
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/infinispan:infinispan-15.1.7.Final-fa466eec-20250623T152424Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/proxy:proxy-2024.0-cce98866-20250627T135324Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/task-release:witsmlliveupdatetask_release-3.0.1-1511246-202507091432-20250709T143406Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/task-release:witsmlpollingtask_release-3.0.1-1511246-202507091432-20250709T143406Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/task-release:witsmlwelltrajectorypollingtask_release-3.0.1-1511246-202507091432-20250709T143406Z
IVAAP Database¶
encryptZalandoPGPassword (K3s Only)¶
The encryptZalandoPGPassword is only applicable to K3s single-server VM deployments where Zalando Postgres Operator is being used. Zalando generates a user password automatically. This password must be encrypted and configured in the IVAAP Helm Template for the adminserver to establish connection.
This function serves as an easy way to collect this password and encrypt it. The function will prompt the user to enter an encryption key. This key will be used to encrypt the password, and can be whatever you choose. The syntax is encryptZalandoPGPassword <namespace>.
user@linux:~$ encryptZalandoPGPassword ivaap
Enter your desired encryption key for encrypting the password: myEncryptionKey
Encrypting kX7pQmRz8dFo1VYt4jBHE2cNS0gqPwGnaK5lMuO9ZxhyLJrDf3TeCb6WsivUoXpA ...
kPefW6JHY4cUmCZlywoxwqxGx22N+PZZgrNmIROUGbB9dXQB6OkJy6ww5maISUNipluYuHtW28pME4ZUhq3uJmPsdMAm5AGUFNYuRaB/SI4=
ivaap_pgdump¶
The function ivaap_pgdump conveniently creates a PostgreSQL database dump to keep as a backup. This works regardless of how the database is deployed, as it uses all database connection environment variables within the adminserver pod. Syntax is ivaap_pgdump <namespace>.
user@linux:~$ ivaap_pgdump ivaap
Backup successfully created and validated: ivaap-postgres-ivaap-2025-08-19_17-27-53.sql.gz
To extract the dump, use: gunzip ivaap-postgres-ivaap-2025-08-19_17-27-53.sql.gz before loading it.
IVAAP Deployment Debugging (K3s Only)¶
aailogs & ailogs¶
The alias aailogs creates tarball of all logs in ivaap-volumes/logs on K3s single-server deployments, and saves it to the home directory.
Sometimes, IVAAP logs directory can be quite large, especially for long running deployments. It may only be necessary to collect recent logs. In these cases, ailogs can be used, which creates a tar file of the logs from only the last 7 days.
IVAAP DevOps Administration¶
iastrust¶
The prefix ias stands for IVAAP Adminserver, and the iastrust alias scrapes the IVAAPServer/api/v2/trust API, and collects the circle of trust challenge and session tokens. The syntax is iastrust <namespace>.
user@linux:~$ iastrust ivaap
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 100 617 0 0 355k 0 --:--:-- --:--:-- --:--:-- 602k
{
"challenge": "QCnkcqDoSVRw1QBLunHTIFJxqfXNIbRUr2Vsv4eIyi1Nnis82lN21MfffcYx/wa5DO7ZfNM84zKVCfNuO8fYMPVUyBHpMpRS6G5aJ1igzdVar7fP1/cvUSkRxrW3kHCVhWo07I4w9INYlkBD8rqaAukXTxAPgOVvf8ZFPlfpIY20lPjZeEyPlGSUI4vv168P2tfNH6HUCm72AaBXPhs+d3xdkLVciTacM3/EdIphEaCvZFy87UN0yGOCiPV7m7dvll4RBZ85Qh72tKBHxROuEdFxLKRe32qowatyb5uFHmQh2Nbfx2qs9W/+9xg9CBS7nwn5BDhA43Lzsx8P8UCFTg==",
"session": "4ASkKWt0E1HlfsWPxcricgbZbSqoN3HywMlOOlx3gMqOuRtoBJrzd2G6KAARVktf5AcrX9rXMPB3YrNxkTgWNiXNUu1QCxpYNkIHdL4e42r572FuStKTwLcYVixYtGZSATQa8OqPieI91rQCak2zpxtuWJKqPTN0kHfSKzGNc3VoxIf0fGUVPOcwnoCFMx9akgWox8KKW9Dn99ZmbjXWvrfGj0qDViNfD61ecu2Nlh3lWN04tuVt"
}
iasabout¶
The iasabout alias shows the output of the Adminserver's about API (IVAAPServer/api/v2/about). This contains information about the postgres database, and other metrics. The syntax is iasabout <namespace>.
user@linux:~$ iasabout ivaap
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 973 0 973 0 0 44189 0 --:--:-- --:--:-- --:--:-- 44227
{
"name": "IVAAP Data Backend",
"database": {
"version": "PostgreSQL 15.12",
"description": "PostgreSQL 15.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-17), 64-bit"
},
"localTime": {
"day": 19,
"dayOfYear": 231,
"month": 8,
"year": 2025,
"hour": 17,
"minute": 45,
"second": 37,
"millisecond": 83
},
"localTimeZone": {
"id": "GMT",
"name": "(GMT0:00) GMT"
},
"api": {
"versions": [
{
"id": "v2",
"links": [
{
"rel": "OpenApi Specification",
"name": "OpenApi Specifications",
"relEntity": "v1/schema/int/openapispec",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false,
"href": "/IVAAPServer/api/v2/openapispecs"
},
{
"rel": "Test Result",
"name": "Test Results",
"relEntity": "v1/schema/int/testresult",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false,
"href": "/IVAAPServer/api/v2/testresults"
}
]
}
]
},
"metrics": {
"startTime": "Tue Aug 05 21:05:36 GMT 2025",
"startTimestamp": 1754427936937,
"upTime": "13 Days, 20 Hours and 40 Minutes",
"timestamp": 1755625537095
}
}
ibmetrics¶
The ibmetrics alias shows the ouput of the IVAAP Backend metrics api (/ivaap/api/v1/cluster/services/metrics). The syntax is ibmetrics <namespace>.
user@linux:~$ ibmetrics ivaap
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2498 100 2498 0 0 15792 0 --:--:-- --:--:-- --:--:-- 15710
{
"timestamp": 1755625661223,
"configuredServiceRoleCount": 5,
"configuredServiceRoleNames": "admin,epsg,messaging,mqgateway,opensdus3",
"servicesMetricsCount": 6,
"servicesMetricsValues": [
{
"name": "admin",
"UUID": "cfab815f-6a4d-4614-8e38-862ade0a6573",
"startTime": "Tue Aug 05 21:05:59 GMT 2025",
"startTimestamp": 1754427959274,
"upTime": "13 days, 20 hours and 41 minutes",
"processCpuLoadPct": 0.08415484491464295,
"processCpuTime": 23642750000000,
"usedHeapKB": 248389,
"committedHeapKB": 643072,
"threadCount": 88,
"daemonThreadCount": 19,
"peakThreadCount": 104,
"timestamp": 1755625661110
},
{
"name": "epsg",
"UUID": "95885a13-ce4a-4751-8c93-975d9ecad601",
"startTime": "Tue Aug 05 21:06:08 GMT 2025",
"startTimestamp": 1754427968221,
"upTime": "13 days, 20 hours and 41 minutes",
"processCpuLoadPct": 0.1571503404924044,
"processCpuTime": 24043780000000,
"usedHeapKB": 156462,
"committedHeapKB": 737280,
"threadCount": 82,
"daemonThreadCount": 21,
"peakThreadCount": 97,
"timestamp": 1755625661119
},
{
"name": "messaging",
"UUID": "54e949d6-1c1c-4834-b95d-ffc7fe94bc0d",
"startTime": "Tue Aug 05 21:06:11 GMT 2025",
"startTimestamp": 1754427971010,
"upTime": "13 days, 20 hours and 41 minutes",
"processCpuLoadPct": 0.2789400278940028,
"processCpuTime": 23571450000000,
"usedHeapKB": 313052,
"committedHeapKB": 524288,
"threadCount": 82,
"daemonThreadCount": 17,
"peakThreadCount": 99,
"timestamp": 1755625661123
},
{
"name": "mqgateway",
"UUID": "22bc5d91-17df-40fe-980a-8432d108bf2b",
"startTime": "Tue Aug 05 21:06:16 GMT 2025",
"startTimestamp": 1754427976922,
"upTime": "13 days, 20 hours and 41 minutes",
"processCpuLoadPct": 6.315789473684211,
"processCpuTime": 23864660000000,
"usedHeapKB": 369535,
"committedHeapKB": 654336,
"threadCount": 73,
"daemonThreadCount": 15,
"peakThreadCount": 97,
"timestamp": 1755625661126
},
{
"name": "opensdus3",
"UUID": "75d644ae-551f-4c90-b670-52d602b85b0c",
"startTime": "Tue Aug 05 21:06:37 UTC 2025",
"startTimestamp": 1754427997154,
"upTime": "13 days, 20 hours and 41 minutes",
"processCpuLoadPct": 0.41356492969396197,
"processCpuTime": 24712230000000,
"usedHeapKB": 81845,
"committedHeapKB": 679936,
"threadCount": 89,
"daemonThreadCount": 22,
"peakThreadCount": 107,
"timestamp": 1755625661122
},
{
"name": "play",
"UUID": "13e4c1e6-7087-4cc8-bd69-5aeae0c6816d",
"startTime": "Tue Aug 05 21:06:20 GMT 2025",
"startTimestamp": 1754427980136,
"upTime": "13 days, 20 hours and 41 minutes",
"processCpuLoadPct": 0.46807489198271723,
"processCpuTime": 22216900000000,
"usedHeapKB": 417347,
"committedHeapKB": 921600,
"threadCount": 71,
"daemonThreadCount": 16,
"peakThreadCount": 72,
"timestamp": 1755625661195
}
]
}
ibabout¶
The ibabout alias shows the IVAAP Backend's about API (/ivaap/api/about). The syntax is ibabout <namespace>.
user@linux:~$ ibabout ivaap
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1688 100 1688 0 0 113k 0 --:--:-- --:--:-- --:--:-- 117k
{
"name": "IVAAP Data Backend",
"version": "3.0.3-0af410b",
"majorVersion": "3",
"minorVersion": "0",
"buildVersion": "3-0af410b",
"localTime": {
"day": 19,
"dayOfYear": 231,
"month": 8,
"year": 2025,
"hour": 17,
"minute": 49,
"second": 10,
"millisecond": 743
},
"localTimeZone": {
"id": "GMT",
"name": "(GMT0:00) GMT"
},
"licenses": {
"IVAAPServer": {
"type": "expires",
"state": "valid",
"expiration": {
"daysUntilExpiration": 6,
"day": 25,
"dayOfYear": 237,
"month": 8,
"year": 2025
}
}
},
"api": {
"versions": [
{
"id": "v1",
"links": [
{
"rel": "OpenApi Specification",
"name": "OpenApi Specifications",
"relEntity": "v1/schema/int/openapispec",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false,
"href": "/ivaap/api/ds/v1/openapispecs"
},
{
"rel": "Source Type",
"name": "Source Types",
"relEntity": "v1/schema/int/sourceType",
"children": false,
"hasProjectEntityChildren": true,
"isProjectEntity": false,
"href": "/ivaap/api/ds/v1"
},
{
"rel": "Formula Evaluation",
"name": "Formula Evaluations",
"relEntity": "v1/schema/int/formulaevaluation",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false,
"href": "/ivaap/api/v1/formulas/evaluation"
},
{
"rel": "Formula Variable",
"name": "Formula Variables",
"relEntity": "v1/schema/int/formulavariables",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false,
"href": "/ivaap/api/v1/formulas/variables"
},
{
"rel": "Formula Validation",
"name": "Formula Validations",
"relEntity": "v1/schema/int/formulavalidation",
"children": false,
"hasProjectEntityChildren": false,
"isProjectEntity": false,
"href": "/ivaap/api/v1/formulas/validation"
}
]
}
]
},
"metrics": {
"startTime": "Tue Aug 05 21:05:59 GMT 2025",
"startTimestamp": 1754427959274,
"upTime": "13 Days, 20 Hours and 43 Minutes",
"timestamp": 1755625750744
}
}
3rd Party Tools¶
For convenience, we have added two alias to install the most commonly used 3rd party tools for IVAAP, which are jq and yq.
jq is a lightweight and flexible command-line JSON processor, and yq is essentially the same thing but for YAML. These allow for easier to read output parsing of JSON and YAML, as well as easy manipulation and modification of JSON/YAML configuration files. The aliases installyq and installjq will install them to your host as long as you have an external internet connection.
Image Retagging Script¶
For easy retagging, a script is included in the ivaap-helpers repository ( ivaap-helpers/image-retagging/retag-images.sh ). This script will load the container images from the provided tar files, retag for your own registry, and push. This script does require docker to be installed on the linux host you run the script on.
To use this script, first authenticate to your registry. This can vary depending on your registry. Below are some examples.
# AWS ECR (requires credentials with AWS CLI)
docker login -u AWS -p $(aws ecr get-login-password --region <region>) <registry_name>
# GitHub GHCR
export CR_PAT=<PAT> && echo $CR_PAT | docker login ghcr.io -u <github_organization> --password-stdin
# Azure ACR (requires appropriate permissions)
az login
az acr login -n <registry_name>
Once authenticated, create a directory called images next to the script.
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ ls
retag-images.sh
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ mkdir images
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ ls
images retag-images.sh
Now, place all image tar files from your delivery package into that new images directory.
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ mv /opt/ivaap/docker-images.tar.gz images/.
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ mv /opt/ivaap/mongonode-3.0-10.tar.gz images/.
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ ls images/
docker-images.tar.gz mongonode-3.0-10.tar.gz
You are now ready to run the script. You will be prompted to enter your base registry - enter the registry and press enter (Example: caspian.azurecr.io). For demonstration purposes, I will be pushing to an Amazon ECR named 245634265005.dkr.ecr.us-west-2.amazonaws.com.
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ ./retag-images.sh
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
This script will retag and push docker images to your own container registry.
Please ensure you have already authenticated with your registry before you begin, and that ALL image tar files have been placed in the 'images' directory.
Depending on your registry, the repos may need to be created first before running the script.
This script does require docker to be installed.
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Enter base URL for your container registry:
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
245634265005.dkr.ecr.us-west-2.amazonaws.com
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Loading docker images from tarfile.
This may take a few minutes...
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
This first step will take some time, as all of the images are being loaded into the docker daemon. Once this process is done, you will see the retagged images being pushed to your registry.
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Tagging caspian.azurecr.io/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-3.4.1 for 245634265005.dkr.ecr.us-west-2.amazonaws.com
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Pushing 245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-3.4.1
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
The push refers to repository [245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-standard]
0a7be98f7edd: Pushed
28234ebf3320: Pushed
887b38688c47: Pushed
c304906f3b8e: Pushed
83d58edfe986: Pushed
fe39040c91bd: Pushed
888a7ec8f432: Pushed
2634b1f040e6: Pushed
cf49fdcee664: Pushed
49fe10b02518: Pushed
5ee585a3ee0b: Pushed
0aedcea5d453: Pushed
bc8c2c92c6d9: Pushed
994456c4fd7b: Pushed
ivaap-dashboard-standard-3.4.1: digest: sha256:d3516e0a04af47dd5d2796af76d7ce685193fc40492c81654b6c3922080aa840 size: 3450
Once complete, you will see this message:
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Success! All images were pushed to 245634265005.dkr.ecr.us-west-2.amazonaws.com
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
- caspian.azurecr.io/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-3.4.1
- caspian.azurecr.io/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-external-3.4.1
- caspian.azurecr.io/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-external-3.4.1
- caspian.azurecr.io/ivaap/adminserver:adminserver-3.0.52-ff49516-eclipse-temurin-21-jdk-alpine-202511142248Z
- caspian.azurecr.io/ivaap/backend/seednode:seednode-3.0-9-7a321bd-20251022T172754Z
- caspian.azurecr.io/ivaap/backend/epsgnode:epsgnode-3.0-9-7a321bd-20251022T172754Z
- caspian.azurecr.io/ivaap/frontend/admin-client:ivaap_admin-3.0.2
- caspian.azurecr.io/ivaap/proxy:proxy-2025.x-cd95019f-20251107T140506Z
- caspian.azurecr.io/ivaap/activemq:activemq-6.1.7-96e1cba9-202510050405Z
- caspian.azurecr.io/ivaap/backend/messagingnode:messagingnode-3.0-9-7a321bd-20251022T172754Z
- caspian.azurecr.io/ivaap/frontend/dashboard-standard:osdu-standard-external-3.4.1
- caspian.azurecr.io/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-3.4.1
- caspian.azurecr.io/ivaap/frontend/dashboard-publish:osdu-publish-external-3.4.1
- caspian.azurecr.io/ivaap/backend/adminnode:adminnode-3.0-9-7a321bd-20251022T172754Z
- caspian.azurecr.io/ivaap/backend/playnode:playnode-3.0-9-7a321bd-20251022T172754Z
- caspian.azurecr.io/ivaap/backend/mqgatewaynode:mqgatewaynode-3.0-9-7a321bd-20251022T172754Z
- caspian.azurecr.io/ivaap/backend/mongonode:mongonode-3.0-10-3a6e2fa-20251022T172754Z
A new text file will have been created as well. This file contains all of the new images that were pushed to your own registry. cat this file to see the full list.
user@linux:/opt/ivaap/ivaap-helpers/image-retagging$ cat new-image-list.txt
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-3.4.1
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-standard:ivaap-dashboard-standard-external-3.4.1
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-external-3.4.1
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/adminserver:adminserver-3.0.52-ff49516-eclipse-temurin-21-jdk-alpine-202511142248Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/seednode:seednode-3.0-9-7a321bd-20251022T172754Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/epsgnode:epsgnode-3.0-9-7a321bd-20251022T172754Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/admin-client:ivaap_admin-3.0.2
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/proxy:proxy-2025.x-cd95019f-20251107T140506Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/activemq:activemq-6.1.7-96e1cba9-202510050405Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/messagingnode:messagingnode-3.0-9-7a321bd-20251022T172754Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-standard:osdu-standard-external-3.4.1
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-3.4.1
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-publish:osdu-publish-external-3.4.1
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/adminnode:adminnode-3.0-9-7a321bd-20251022T172754Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/playnode:playnode-3.0-9-7a321bd-20251022T172754Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/mqgatewaynode:mqgatewaynode-3.0-9-7a321bd-20251022T172754Z
245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/backend/mongonode:mongonode-3.0-10-3a6e2fa-20251022T172754Z
Some error handling has been added in case you receive an image that does not match the expected base registry. In the example below, the image was rejected because it does not match the expected base registry of caspian.azurecr.io.
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Skipping image not from caspian.azurecr.io: 245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-3.4.1
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
ERROR The following images were not pushed to 245634265005.dkr.ecr.us-west-2.amazonaws.com:
- 245634265005.dkr.ecr.us-west-2.amazonaws.com/ivaap/frontend/dashboard-publish:ivaap-dashboard-publish-3.4.1
If this occurs, please contact SLB for assistance.
This script, while a manual process, could be a good starting point to adapt into an automated retagging pipeline by hard coding your base registry and removing the user prompt.