Pre-Upgrade Checklist

The section identifies the tasks that can be performed before you begin your upgrade to ensure a successful upgrade and limited downtime.

Upgrading IoT FND


Note


It is not necessary to stop the database during normal upgrades. All upgrades are in-place.



Note


For virtual IoT FND installations using custom security certificates, see Managing custom certificates before performing an upgrade.



Caution


Run the following steps sequentially.


To upgrade the IoT FND application:

Procedure


Step 1

Obtain the new IoT FND ISO from Cisco.

Step 2

Extract the cgms rpms into a directory from the FND release ISO file.

Step 3

Run rpm -qa | grep cgms to get the list of rpms installed in the application server.

Step 4

Run the following command to stop IoT FND.

RHEL Version

Command

8.x

systemctl stop cgms

7.x

service cgms stop

Note

 

The application typically takes approximately 10 seconds to stop.

Step 5

Run ps | grep java to verify that no Java processes are running.

Step 6

Run the following command to make sure that the cgms service has stopped.

RHEL Version

Command

8.x

systemctl status cgms

7.x

service cgms status

Step 7

Run the following script to upgrade the IoT FND RPM.

IoT FND Release Command

Upgrade to 4.11.0 from any earlier release.

rpm -Uvh <new_cgms_rpm_filename> --force
For example, to upgrade to IoT FND release 4.11.0, run the following command.

rpm -Uvh cgms-4.11.0-46.x86_69.rpm --force

Upgrades prior to release 4.11.0.

rpm -Uvh <new_cgms_rpm_filename>

Note

 

We recommend you to upgrade all the installed rpms with the same FND version that you will upgrade to. The new rpm files overwrite the existing files in /opt/cgms.

Step 8

Run ./db-migrate in /opt/cgms/bin directory to upgrade the database.

Note

 

Ensure that you run the db-migrate script after each upgrade.

Step 9

Enter the database password when prompted.

Note

 

The default password is cgms123.

Step 10

Run the following command to start IoT FND.

RHEL Version

Command

8.x

systemctl start cgms

7.x

service cgms start

Note

 

You can also use the RHEL (Red Hat Enterprise Linux) GUI to start the IoT FND service (ADMIN > System Management > Server Settings > Services).


Upgrading FND TPS Proxy


Note


Based on the RHEL version, choose either systemctl or service commands.

For example, to stop tpsproxy services:

RHEL Version

Command

8.x

systemctl stop tpsproxy.service

7.x

service tpsproxy stop

To upgrade the TPS Proxy server manually:

Procedure


Step 1

Back up the following config files in the /opt/cgms-tpsproxy/conf directory.

  • tpsproxy.properties

  • cgms_keystore

Step 2

Before starting the upgrade process, ensure that the following services are running.

[root@iot-tps opt]# systemctl status tpsproxy.service
● tpsproxy.service - SYSV: CGMS Tunnel Provisioning proxy server
   Loaded: loaded (/etc/rc.d/init.d/tpsproxy; generated)
   Active: active (running) since Mon 2023-11-06 23:51:00 IST; 6 months 2 days ago
     Docs: man:systemd-sysv-generator(8)
  Process: 35730 ExecStart=/etc/rc.d/init.d/tpsproxy start (code=exited, status=0/SUCCESS)
    Tasks: 45 (limit: 152533)
   Memory: 204.1M
   CGroup: /system.slice/tpsproxy.service
           └─35748 java -server -Xms128m -Xmx2g -XX:MaxPermSize=256m -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/cgms-tpsproxy/log -XX:-OmitStackTraceInFastThrow -XX:-Use>

Nov 06 23:50:58 iot-tps systemd[1]: Starting SYSV: CGMS Tunnel Provisioning proxy server...
Nov 06 23:50:59 iot-tps runuser[35746]: pam_unix(runuser:session): session opened for user root by (uid=0)
Nov 06 23:50:59 iot-tps runuser[35746]: pam_unix(runuser:session): session closed for user root
Nov 06 23:51:00 iot-tps tpsproxy[35730]: [36B blob data]
Nov 06 23:51:00 iot-tps systemd[1]: Started SYSV: CGMS Tunnel Provisioning proxy server.

Step 3

Run the following command to stop the tpsproxy services.

systemctl stop tpsproxy

Step 4

Copy the cgms-tpsproxy.rpm downloaded from software.cisco.com to a directory in the TPS server.

Step 5

Run the following command to upgrade the tpsproxy server.

rpm -Uvh cgms-tpsproxy-<fnd-version>.rpm
[root@iot-tps opt]# rpm -Uvh cgms-tpsproxy-<fnd-version>.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:cgms-tpsproxy-4.12.0-56          ################################# [ 50%]
PSK key already present
05-09-2024 15:36:02 IST: INFO: Looking for /opt/cgms-tpsproxy/conf/tpsproxy.properties
05-09-2024 15:36:02 IST: INFO: cgms-keystore-password-hidden already exists. Doing nothing.
Cleaning up / removing...
   2:cgms-tpsproxy-4.10.0-45          ################################# [100%]
[root@iot-tps opt]#

Step 6

Run the following command to start the tpsproxy services.

systemctl start tpsproxy.service
[root@iot-tps opt]# systemctl start tpsproxy.service
[root@iot-tps opt]# systemctl status tpsproxy.service
● tpsproxy.service - SYSV: CGMS Tunnel Provisioning proxy server
   Loaded: loaded (/etc/rc.d/init.d/tpsproxy; generated)
   Active: active (running) since Thu 2024-05-09 15:36:45 IST; 4s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 209931 ExecStart=/etc/rc.d/init.d/tpsproxy start (code=exited, status=0/SUCCESS)
    Tasks: 39 (limit: 152533)
   Memory: 71.1M
   CGroup: /system.slice/tpsproxy.service
           └─209949 java -server -Xms128m -Xmx2g -XX:MaxPermSize=256m -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/cgms-tpsproxy/log -XX:-OmitStackTraceInFastThrow -XX:-Us>

May 09 15:36:44 iot-tps systemd[1]: Starting SYSV: CGMS Tunnel Provisioning proxy server...
May 09 15:36:44 iot-tps runuser[209947]: pam_unix(runuser:session): session opened for user root by (uid=0)
May 09 15:36:44 iot-tps runuser[209947]: pam_unix(runuser:session): session closed for user root
May 09 15:36:45 iot-tps tpsproxy[209931]: [36B blob data]
May 09 15:36:45 iot-tps systemd[1]: Started SYSV: CGMS Tunnel Provisioning proxy server.
  1. Run the following command to check the log.

    tail -f /opt/cgms-tpsproxy/log/tpsproxy.log

    Example Output:

    [root@iot-tps opt]# tail -f /opt/cgms-tpsproxy/log/tpsproxy.log
    32: iot-tps: May 09 2024 06:06:45.108 -0400: %CGMS-6-UNSPECIFIED: %[ch=BootstrapProxy][sev=INFO][tid=main]: bootstrap-proxy-listen-port=9125
    33: iot-tps: May 09 2024 06:06:45.108 -0400: %CGMS-6-UNSPECIFIED: %[ch=BootstrapProxy][sev=INFO][tid=main]: inbound-proxy-destination=http://<fnd hostname/ip address>:9125
    34: iot-tps: May 09 2024 06:06:45.108 -0400: %CGMS-6-UNSPECIFIED: %[ch=BootstrapProxy][sev=INFO][tid=main]: inbound-proxy-timeout=300000
    35: iot-tps: May 09 2024 06:06:45.108 -0400: %CGMS-6-UNSPECIFIED: %[ch=BootstrapProxy][sev=INFO][tid=main]: inbound-proxy-idle-timeout=300000
    36: iot-tps: May 09 2024 06:06:45.108 -0400: %CGMS-6-UNSPECIFIED: %[ch=BootstrapProxy][sev=INFO][tid=main]: inbound-proxy-connections=30
    37: iot-tps: May 09 2024 06:06:45.108 -0400: %CGMS-6-UNSPECIFIED: %[ch=BootstrapProxy][sev=INFO][tid=main]: inbound-proxy-max-response-timeout=305000
    38: iot-tps: May 09 2024 06:06:45.110 -0400: %CGMS-6-UNSPECIFIED: %[ch=Server][sev=INFO][tid=main]: jetty-9.2.19.v20160908
    39: iot-tps: May 09 2024 06:06:45.111 -0400: %CGMS-6-UNSPECIFIED: %[ch=ContextHandler][sev=INFO][tid=main]: Started o.e.j.s.ServletContextHandler@4d41cee{/,null,AVAILABLE}
    40: iot-tps: May 09 2024 06:06:45.112 -0400: %CGMS-6-UNSPECIFIED: %[ch=ServerConnector][sev=INFO][tid=main]: Started ServerConnector@3712b94{HTTP/1.1}{0.0.0.0:9125}
    41: iot-tps: May 09 2024 06:06:45.112 -0400: %CGMS-6-UNSPECIFIED: %[ch=Server][sev=INFO][tid=main]: Started @697ms
    

Step 7

Check the tpsproxy service status.

systemctl status tpsproxy.service
Example Output:
[root@iot-tps opt]# systemctl status tpsproxy.service
● tpsproxy.service - SYSV: CGMS Tunnel Provisioning proxy server
   Loaded: loaded (/etc/rc.d/init.d/tpsproxy; generated)
   Active: active (running) since Thu 2024-05-09 15:36:45 IST; 1min 52s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 209931 ExecStart=/etc/rc.d/init.d/tpsproxy start (code=exited, status=0/SUCCESS)
    Tasks: 39 (limit: 152533)
   Memory: 71.1M
   CGroup: /system.slice/tpsproxy.service
           └─209949 java -server -Xms128m -Xmx2g -XX:MaxPermSize=256m -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/cgms-tpsproxy/log -XX:-OmitStackTraceInFastThrow -XX:-Us>

May 09 15:36:44 iot-tps systemd[1]: Starting SYSV: CGMS Tunnel Provisioning proxy server...
May 09 15:36:44 iot-tps runuser[209947]: pam_unix(runuser:session): session opened for user root by (uid=0)
May 09 15:36:44 iot-tps runuser[209947]: pam_unix(runuser:session): session closed for user root
May 09 15:36:45 iot-tps tpsproxy[209931]: [36B blob data]
May 09 15:36:45 iot-tps systemd[1]: Started SYSV: CGMS Tunnel Provisioning proxy server.

Post-Upgrade Checklist

This section describes the tasks that you have to perform post upgrade:


Note


Any manual changes made to the cgms scripts are lost post upgrade; therefore, you have to make the changes again.


  • Run setupCgms script to reconfigure FND.


    Note


    The setupCgms script provides information on new configurations that are part of this FND upgrade.


  • Run DB migrate script to upgrade the database.

  • Start cgms service to monitor the status.

Upgrade FND in HA Configuration or Clustered Mode

This section provides the tasks for upgrading IoT FND in high-availability (HA) configuration or clustered mode:

  • Upgrade Oracle DB. For more information, refer to Upgrading the IoT FND Database.

  • Stop all application servers that are part of the cluster.

  • Upgrade all the FND applications.

  • Run db-migrate post upgrade in one of the application servers.

  • Start FND service one by one.