Note
Tutorial: install, configure, deploy

For beginning users, this tutorial walks step by step through:

  • installing and configuring the Sentinel Express SDK

  • using of the sdkadm command for basic Sentinel Express SDK administration

  • creating an example service deployment module

  • deploying an unmodified service into Rhino.

Completing the walkthrough will leave you ready to continue with the next tutorial: Creating a feature.

Installation Method

The instructions below provide a manual SDK installation. This is suitable for users who want to have a better understanding of the SDK capabilities and how so called "deployment modules" are created and function. Another option is to use the Sentinel Express Installer, which leads to the same result, but automatically performs these steps, in effect simplifying the installation process. If you use the installer you can skip to Creating a Feature, otherwise continue reading this page.

Prerequisites

Before installing the Sentinel Express SDK, download:

Prerequisite

Download URL

Java 11

RhinoSDK 3.2

Note The Sentinel Express SDK can download and set up a Rhino SDK for basic development purposes.

Sentinel Express SDK zip

Contact your support agent for details on downloading the SDK

The Sentinel Express SDK bundles:

  • Apache Ant 1.10.5

  • Apache Ivy 2.5.0-rc1

Note You can also use an existing Ant or Ivy installation, see Setting up Ant.

Git (recommended,optional)

The Sentinel Express SDK has Ant targets in the rhino-sdk/ module to install, start, and stop the Rhino SDK. This is recommended for developers new to Rhino and the Sentinel Express SDK.

Setting environment variables

On your Operating System, ensure that the JAVA_HOME environment variable is set and points to Java 11. On Linux or Unix systems, you can test this as follows:

user@machine:~$ $JAVA_HOME/bin/java -version
openjdk version "11.0.6" 2020-01-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.6+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.6+10-LTS, mixed mode, sharing)

Ensure that the ANT_HOME environment variable is set and points to Apache Ant 1.10.5 or later. On Linux or Unix systems, you can test this as follows:

user@machine:~$ $ANT_HOME/bin/ant -version
Apache Ant(TM) version 1.10.7 compiled on September 1 2019

It is recommended to set your PATH environment variable to include $ANT_HOME/bin and $JAVA_HOME/bin. The remainder of the documentation assumes that the correct version of Java and Ant are in the users PATH. On Linux or Unix systems, this can be tested as follows:

user@machine:~$ java -version
openjdk version "11.0.6" 2020-01-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.6+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.6+10-LTS, mixed mode, sharing)

user@machine:~$ ant -version
Apache Ant(TM) version 1.10.7 compiled on September 1 2019

Installing the Sentinel Express SDK

To install the Sentinel Express SDK:

1

Unzip the sentinel-express-sdk.zip file into the directory location that will contain your Sentinel Express SDK.

$ unzip sentinel-express-sdk.zip
Archive:  sentinel-express-sdk.zip
   creating: sentinel-express-sdk/
   creating: sentinel-express-sdk/tools/
 extracting: sentinel-express-sdk/tools/.gitignore
 extracting: sentinel-express-sdk/tools/.sdk.root
  inflating: sentinel-express-sdk/tools/tools.properties
  inflating: sentinel-express-sdk/tools/build.xml
  inflating: sentinel-express-sdk/deps.properties
   creating: sentinel-express-sdk/build/
  inflating: sentinel-express-sdk/build/default-targets.xml
  inflating: sentinel-express-sdk/build/sdkroot-targets.xml
  inflating: sentinel-express-sdk/build/ivy-common.xml
  inflating: sentinel-express-sdk/build/installer.xml
  inflating: sentinel-express-sdk/build/default-branch-targets.xml
  inflating: sentinel-express-sdk/build/common.xml
  inflating: sentinel-express-sdk/build/targets.xml
  inflating: sentinel-express-sdk/build/module-targets.xml
  inflating: sentinel-express-sdk/build/toolchain-macrodefs.xml
 extracting: sentinel-express-sdk/build/deps.properties
   creating: sentinel-express-sdk/build/bin/
  inflating: sentinel-express-sdk/build/bin/go-online
  inflating: sentinel-express-sdk/build/bin/installer
  inflating: sentinel-express-sdk/build/bin/sdkadm
 extracting: sentinel-express-sdk/build/bin/.sdk.root
  inflating: sentinel-express-sdk/build/bin/go-offline
  inflating: sentinel-express-sdk/build/bin/ant
  inflating: sentinel-express-sdk/build/bin/common-sdk
 extracting: sentinel-express-sdk/build/.gitignore
  inflating: sentinel-express-sdk/build/sdk.version
 extracting: sentinel-express-sdk/build/.sdk.root
  inflating: sentinel-express-sdk/build/init.xml
  inflating: sentinel-express-sdk/build/README.txt
  inflating: sentinel-express-sdk/build/README
   creating: sentinel-express-sdk/build/ivy/
  inflating: sentinel-express-sdk/build/ivy/ivy-defaults.properties
  inflating: sentinel-express-sdk/build/ivy/offline-resolvers.xml
  inflating: sentinel-express-sdk/build/ivy/local-resolvers.xml
  inflating: sentinel-express-sdk/build/ivy/ivysettings.xml
  inflating: sentinel-express-sdk/build/dynamic-targets.xml
  inflating: sentinel-express-sdk/build/build-ivy.xml
   creating: sentinel-express-sdk/build/scripts/
  inflating: sentinel-express-sdk/build/scripts/coverage.sh
  inflating: sentinel-express-sdk/build/common.properties
   creating: sentinel-express-sdk/build/ant/
  inflating: sentinel-express-sdk/build/ant/ant-build-support.jar
  inflating: sentinel-express-sdk/build/ant/ivy.jar
  inflating: sentinel-express-sdk/build/ant/ant.jar
  inflating: sentinel-express-sdk/build/ant/ant-launcher.jar
  inflating: sentinel-express-sdk/build/public-macrodefs.xml
  inflating: sentinel-express-sdk/build/module-pack-source-license.txt
  inflating: sentinel-express-sdk/build/branch-targets.xml
  inflating: sentinel-express-sdk/.gitignore
 extracting: sentinel-express-sdk/.sdk.root
  inflating: sentinel-express-sdk/sdk.properties
  inflating: sentinel-express-sdk/README.txt
 extracting: sentinel-express-sdk/.build
  inflating: sentinel-express-sdk/build.xml
   creating: sentinel-express-sdk/rhino-sdk/
  inflating: sentinel-express-sdk/rhino-sdk/rhino.properties
 extracting: sentinel-express-sdk/rhino-sdk/.gitignore
 extracting: sentinel-express-sdk/rhino-sdk/.sdk.root
  inflating: sentinel-express-sdk/rhino-sdk/build.xml
   creating: sentinel-express-sdk/rhino-sdk/ext/
  inflating: sentinel-express-sdk/rhino-sdk/ext/default-configure-rhino.xml
   creating: sentinel-express-sdk/repositories/
   creating: sentinel-express-sdk/repositories/opencloud-offline-mirror/
   creating: sentinel-express-sdk/repositories/opencloud-offline-mirror/
   ......

2

From the sentinel-express-sdk directory, type:

./build/bin/ant init-sdk

This command initialises the Sentinel Express SDK directory. Note from version 4.1 onwards a remote artifactory host is no longer used.

$ ant init-sdk
Buildfile: /home/testuser/sentinel-express-sdk/build.xml

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:

Determining Ivy settings.

Checking ivy-defaults.properties for ivy settings.
 ivy.cache.root=${sdk.root}/build/target/ivy-caches/offline-resolvers.cache(from ivy-defaults.properties)
 ivy.checksums=sha1                                              (from ivy-defaults.properties)
 ivy.dir=${basedir}                                              (from ivy-defaults.properties)
 ivy.libs=${target}/libs                                         (from ivy-defaults.properties)
 ivy.local.root=${sdk.root}/repositories/sdk-local               (from ivy-defaults.properties)
 ivy.offline.root=${sdk.root}/repositories/opencloud-offline-mirror(from ivy-defaults.properties)
 ivy.publication.root=${ivy.local.root}                          (from ivy-defaults.properties)
 ivy.resolve.refresh=false                                       (from ivy-defaults.properties)
 ivy.sdk-resolvers.file=offline-resolvers.xml                    (from ivy-defaults.properties)
 ivy.sdk-resolvers.path=${ivy.settings.dir}/${ivy.sdk-resolvers.file}(from ivy-defaults.properties)
 ivy.symlinks=false                                              (from ivy-defaults.properties)
 ivy.symlinks=true                                               (from ant environment)

Writing Ivy configuration to: /home/testuser/sentinel-express-sdk/ivy.properties

     [echo] Ivy Resolvers: /home/testuser/sentinel-express-sdk/build/ivy/offline-resolvers.xml
     [echo] Configuring Ivy with settings: /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is missing or out of date.
     [echo] Populating lib/ from ivy...
    [mkdir] Created dir: /home/testuser/sentinel-express-sdk/build/target/lib
    [touch] Creating /home/testuser/sentinel-express-sdk/build/target/lib/.lib.uptodate

update-index-properties:
[oc:index-properties] Resolving: com.opencloud.rhino.sentinel-pack#sentinel-express-index;+
[oc:index-properties] Copying /home/testuser/sentinel-express-sdk/repositories/opencloud-offline-mirror/com.opencloud.rhino.sentinel-pack/sentinel-express-index/4.1.6/sentinel-express-index-4.1.6.json to /home/testuser/sentinel-express-sdk/build/target/lib/index/sentinel-express-index-4.1.6.json
[oc:index-properties] Reading Module metadata from index: /home/testuser/sentinel-express-sdk/build/target/lib/index/sentinel-express-index-4.1.6.json
[oc:index-properties] Writing dependency properties to: /home/testuser/sentinel-express-sdk/release.properties

init:

init-branch:

init-sdk:

BUILD SUCCESSFUL
Total time: 2 seconds

The Sentinel Express SDK is now installed.

Directory structure

Here’s a directory listing of a newly installed SDK:

$ ls
README.txt      build           build.xml       deps.properties rhino-sdk       sdk.properties

Here’s what those files and directories are for:

File or directory Contents

build

Build scripts, tools, and libraries.

build.xml

'branch'-level commands for building of all modules within the SDK,
for setting up IDE projects, and for running ant sdkadm.

deps.properties

Common Ivy dependencies across modules in the SDK.

Note Project-wide dependency properties can be added to this file.

ivy.properties

Configuration for Ivy, such as repository location, credentials, and so on.

Note You can modify this file. Deleting it will cause it to be regenerated.

release.properties

Generated file containing version and branch properties for all standard {productname} dependencies associated with a release.

Note Do not modify this file.

README.txt

A README file. It points the user to this documentation.

rhino-sdk

Support module for installing, starting, stopping, and resetting a Rhino SDK directly from within the Sentinel Express SDK

sdk.properties

SDK configuration variables used by all build scripts.

Note You can specify HTTP/HTTPS proxy properties in section Proxy settings in this file to support SDK tools behind proxy as shown an example below.

Setting the SDK properties

sdk.properties contains the following variables which need to be set:

Property Description Default value Example value Valid values

sdk.ivy.org

Organisation name used for Ivy publishing from the SDK

 UNSET
 rocket
 Single lowercase string.

sdk.component.vendor

Vendor name of the components created using the SDK

 UNSET
 Rocket Inc.
 SLEE component identifier.

sdk.platform.operator.name

Platform operator name for configuration of the service

 UNSET
 Rocket
 Any valid Java identifier.

Use a text editor to edit sdk.properties and replace the default value of UNSET in each case with a value suitable for your organisation.

If you are setting up the SDK behind the proxy, the section Proxy setting in sdk.prperties needs to be updated. For example:

# Proxy settings
#

sdk.http.proxyHost=your.proxy.com
sdk.http.proxyPort=3128
sdk.https.proxyHost=your.proxy.com
sdk.https.proxyPort=3128

#These properties are used for both http and https.
sdk.http.nonProxyHosts=localhost|127.0.0.1
sdk.http.proxyUser=username
sdk.http.proxyPassword=password

Setting up Source Control

Setting up source control on the SDK is recommended at this point but is optional. If you choose not to set up source control continue from the next section.

If you are setting up the SDK for personal use, git is a useful system for tracking your local changes.

The SDK has a .gitignore which is suitable for an initial installation. For information on setting up .gitignore files so that other working files and directories that you add are not tracked, see Source control with the Sentinel Express SDK.

To set up the SDK directory as a git repository run the following command from the SDK root:

$ git init
Initialized empty git repository in /home/testuser/sentinel-express-sdk/.git/

Now add the initial files and directories. The SDK already has a suitable .gitignore on installation.

$ git add .

Commit the initial state:

git commit -m "Add initial version of the Sentinel Express SDK"

Setting up Ant

The SDK provides a copy of the Apache Ant build tool. Alternatively you may use an existing Ant installation.

Using Ant from the SDK

The SDK includes a copy of Ant that is preconfigured with the necessary libraries for retrieving SDK dependencies. To use the SDK’s Ant, run sentinel-express-sdk/build/bin/ant.

Using an existing Ant installation

You can use your own Ant installation (version 1.10.5 or later) by copying the bundled libraries to your ~/.ant/lib directory:

$ cd sentinel-express-sdk/build/ant
$ cp ivy.jar ant-build-support.jar ~/.ant/lib

The Sentinel Express SDK build scripts will not work without the above libraries.

First steps post-installation

After installing Sentinel Express SDK:

1

Ensure that Ant version 1.10.5 or later is in your PATH environment variable. To verify type

ant -version

2

Within the SDK, run sdkadm in interactive mode. This can be done through using ant sdkadm from the command line, or running the sdkadm command from within the build/bin directory.

3

Type help within sdkadm to view available commands.

4

Use the list-modules command to view modules available in the repository for you to use. For details on list-modules, type help list-modules.

5

Next create a deployment module, which will let you install Sentinel Express components into Rhino.

To view the available service deployment modules, use the list-modules +service-deploy command, which gets you something like this:

> list-modules +service-deploy
Listing modules based on module tags.

Modules matching all of the following tags will be listed: service-deploy

com.opencloud.rhino.sentinel-diameter#sentinel-diameter-full-deploy;4.1.0
com.opencloud.rhino.sentinel-diameter#sentinel-diameter-oid-mappings;4.1.0
com.opencloud.rhino.sentinel-diameter#sentinel-diameter-test-full-deploy;4.1.0
com.opencloud.rhino.sentinel-sip#sentinel-registrar-full-deploy;4.1.0
com.opencloud.rhino.sentinel-sip#sentinel-sip-common-deploy;4.1.0
com.opencloud.rhino.sentinel-sip#sentinel-sip-full-deploy;4.1.0
com.opencloud.rhino.sentinel-sip#sentinel-sip-modules-deploy;4.1.0
com.opencloud.rhino.sentinel-sip#sentinel-sip-oid-mappings;4.1.0
com.opencloud.rhino.sentinel-sip#sentinel-sip-test-full-deploy;4.1.0
com.opencloud.rhino.sentinel-ss7#sentinel-ss7-common-deploy;4.1.0
com.opencloud.rhino.sentinel-ss7#sentinel-ss7-full-deploy;4.1.0
com.opencloud.rhino.sentinel-ss7#sentinel-ss7-oid-mappings;4.1.0
com.opencloud.rhino.sentinel-ss7#sentinel-ss7-sis-full-deploy;4.1.0

13 modules matched search criteria out of a total possible 637.
Pagination was set to display unlimited results per page. Specify a pagination entry count as an argument (e.g. '10') to pause output during display.
Specify '-tag' arguments to narrow results by excluding modules matching one or more -tags.
Specify '-v' or '--verbose' to enable display all module details including descriptions.
Specify '--show-all-versions' to list modules for all versions instead of only the latest version.

Sentinel has various services (SIP, SS7, Diameter, Registrar, and so on) available as modules that you can use the deployment module to deploy.

As can be seen, there are several Sentinel service-deployment modules that are suitable for installation.

6

Now create a deployment module for the service, using the create-deployment-module command with the following arguments (the output from this command is quite long and has been edited for brevity here):

> create-deployment-module deploy-sip-service deploy-sip-service com.opencloud.rhino.sentinel-sip#sentinel-sip-full-deploy;4.1.0

The following dependencies will be included in the new module:
 com.opencloud.rhino.sentinel-sip#sentinel-sip-full-deploy;4.1.0

Creating deployment module 'deploy-sip-service' in directory 'deploy-sip-service'.

downloading /home/testuser/sentinel-express-sdk/repositories/opencloud-offline-mirror/com.opencloud.rhino.sentinel-core/deployment-template/4.1.0/deployment-template-module-pack-4.1.0.zip ...
.. (1kB)
.. (0kB)
        [SUCCESSFUL ] com.opencloud.rhino.sentinel-core#deployment-template;4.1.0!deployment-template-module-pack.zip(module-pack) (2ms)
Populating '/home/testuser/sentinel-express-sdk/deploy-sip-service/config' with configuration artifacts.
downloading /home/testuser/sentinel-express-sdk/repositories/opencloud-offline-mirror/com.opencloud.rhino.sentinel-core/sentinel-core-http-parameter-to-network-operator-profile/4.1.0/sentinel-core-http-parameter-to-network-operator-profile-config-4.1.0.zip ...
.. (0kB)
.. (0kB)
        [SUCCESSFUL ] com.opencloud.rhino.sentinel-core#sentinel-core-http-parameter-to-network-operator-profile;4.1.0!sentinel-core-http-parameter-to-network-operator-profile-config.zip(config) (2ms)
downloading /home/testuser/sentinel-express-sdk/repositories/opencloud-offline-mirror/com.opencloud.rhino.sentinel-core/sentinel-core-http-determine-protocol-config-profile/4.1.0/sentinel-core-http-determine-protocol-config-profile-config-4.1.0.zip ...
.. (0kB)
.. (0kB)
        [SUCCESSFUL ] com.opencloud.rhino.sentinel-core#sentinel-core-http-determine-protocol-config-profile;4.1.0!sentinel-core-http-determine-protocol-config-profile-config.zip(config) (2ms)
downloading /home/testuser/sentinel-express-sdk/repositories/opencloud-offline-mirror/com.opencloud.rhino.sentinel-core/sentinel-core-normalizer-config-profile/4.1.0/sentinel-core-normalizer-config-profile-config-4.1.0.zip ...
.. (0kB)
.. (0kB)

... edited for brevity ...

downloading /home/testuser/sentinel-express-sdk/repositories/opencloud-offline-mirror/com.opencloud.rhino.sentinel-sip/sentinel-sip-full-deploy/4.1.0/config-4.1.0.properties ...
.. (0kB)
.. (0kB)
        [SUCCESSFUL ] com.opencloud.rhino.sentinel-sip#sentinel-sip-full-deploy;4.1.0!config.properties (2ms)
Finished writing deployment module to: /home/testuser/sentinel-express-sdk/deploy-sip-service

The purpose of deployment modules is to be able to install a complete product in one go, and creating one is therefore typically one of the first things to do in an SDK. For more information about deployment modules see Modules. Custom features can also be added to deployment modules, see Creating a Feature.

7

Now that the deployment module has been created successfully, you can use the list-sdk-modules command to view the modules inside your SDK:

> list-sdk-modules
Searching for modules in: /home/testuser/sentinel-express-sdk

Found 1 module:
 deploy-sip-service

The new module deploy-sip-service should show up in the output.

8

Exit the sdkadm program: type quit, and press Enter.

The file system will have a new directory called deploy-sip-service. This contains the deployment module. Here’s what it includes:

$ cd deploy-sip-service/
/deploy-sip-service$ ls
build.xml  config  ivy.xml  module.properties

9

Look at the contents of each of the files and directories, to 'get a feel' for what is included in a deployment module.

10

Make sure that you are in the deploy-sip-service module.
Type ant clean publish-local to build the module.

The output should look like this:

$ ant clean publish-local
Buildfile: /home/testuser/sentinel-express-sdk/deploy-sip-service/build.xml

clean-module:
     [echo] Cleaning module build artifacts.

clean:

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/sentinel-express-sdk/build/ivy/offline-resolvers.xml
     [echo] Configuring Ivy with settings: /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/sentinel-express-sdk/release.properties" already exists.
[oc:index-properties] Index configuration has not changed since previous build.
[oc:index-properties] Index configuration uses dynamic revisions. Current version of indexes will be queried.
[oc:index-properties] Querying current version of: com.opencloud.rhino.sentinel-pack#sentinel-express-index;+
[oc:index-properties] Current version is: com.opencloud.rhino.sentinel-pack#sentinel-express-index;4.1.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/sentinel-express-sdk/release.properties" will not be regenerated.

init:

init-module:
    [mkdir] Created dir: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/logs
     [echo] Resolving ivy configurations "*" for deploy-sip-service

set-local-build-revision:
[oc:ivybuildnumber]
[oc:ivybuildnumber] Revision search for deploy-sip-service
[oc:ivybuildnumber] ---------------------------------------
[oc:ivybuildnumber]   Revision basis:  1.0.0
[oc:ivybuildnumber]   Latest revision: none
[oc:ivybuildnumber]
[oc:ivybuildnumber]
[oc:ivybuildnumber] New revisions for deploy-sip-service
[oc:ivybuildnumber] ---------------------------------------
[oc:ivybuildnumber]   release:   1.0.0.0
[oc:ivybuildnumber]   milestone: 1.0.0.0-M1
[oc:ivybuildnumber]   snapshot:  1.0.0.0-SNAPSHOT.r20240205130201
[oc:ivybuildnumber]   local:     1.0.0.0-DEV0-testuser
[oc:ivybuildnumber]
     [echo] Building for local publication of revision 1.0.0.0-DEV0-testuser

check-sas-bundles-present:

generate-sas-enums:

set-default-build-revision:

do-build:
     [echo] Initialising build extensions.
     [echo] Retrieving ivy configuration "antlib" into /home/testuser/sentinel-express-sdk/deploy-sip-service/target/libs/antlib
     [copy] Copying 1 file to /home/testuser/sentinel-express-sdk/deploy-sip-service/target/generated
     [echo] Skipping default module src build - no source available.
     [echo] Skipping default module test build - no test source available.
    [mkdir] Created dir: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/artifacts
     [echo]
     [echo]
    [touch] Creating /home/testuser/sentinel-express-sdk/deploy-sip-service/target/artifacts/deploy-sip-service-deploy.xml
     [echo]
     [copy] Copying 118 files to /home/testuser/sentinel-express-sdk/deploy-sip-service/target/generated/config
      [zip] Building zip: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/artifacts/deploy-sip-service-config.zip
     [copy] Copying 1 file to /home/testuser/sentinel-express-sdk/deploy-sip-service/target/artifacts
     [echo]
     [echo] Building module as a module pack.
     [echo] Building module pack using the following properties:
     [echo]  module.pack.include.path=**/*
     [echo]  module.pack.exclude.path=
     [echo]  module.pack.basedir=/home/testuser/sentinel-express-sdk/deploy-sip-service
     [echo]  module.pack.prepend.file=
     [echo]  module.pack.prepend.include.path=**/*.java
     [echo]  module.pack.prepend.exclude.path=
    [mkdir] Created dir: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/module-pack
     [copy] Copying 122 files to /home/testuser/sentinel-express-sdk/deploy-sip-service/target/module-pack
[oc:update-module-pack-dependencies] Updating module-pack ivy files for: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/module-pack
[oc:update-module-pack-dependencies]
[oc:update-module-pack-dependencies]
[oc:verify-module-pack] Verifying module-pack content: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/module-pack
[oc:verify-module-pack]
      [zip] Building zip: /home/testuser/sentinel-express-sdk/deploy-sip-service/target/artifacts/deploy-sip-service-module-pack.zip

build:

test:
     [echo] Skipping default module test - no tests available.

publish-local-module:
     [echo] Publishing module to local repository.
[ivy:publish] :: delivering :: UNSET#deploy-sip-service;working@DESKTOP-CTRIO6L :: 1.0.0.0-DEV0-testuser :: integration :: Mon Feb 05 13:02:01 NZDT 2024
[ivy:publish]   delivering ivy file to /home/testuser/sentinel-express-sdk/deploy-sip-service/target/artifacts/ivy.xml
[ivy:publish] :: publishing :: UNSET#deploy-sip-service
[ivy:publish]   published deploy-sip-service-config to /home/testuser/sentinel-express-sdk/repositories/sdk-local/UNSET/deploy-sip-service/1.0.0.0-DEV0-testuser/deploy-sip-service-config-1.0.0.0-DEV0-testuser.zip
[ivy:publish]   published deploy-sip-service-config to /home/testuser/sentinel-express-sdk/repositories/sdk-local/UNSET/deploy-sip-service/1.0.0.0-DEV0-testuser/deploy-sip-service-config-1.0.0.0-DEV0-testuser.properties
[ivy:publish]   published deploy-sip-service-module-pack to /home/testuser/sentinel-express-sdk/repositories/sdk-local/UNSET/deploy-sip-service/1.0.0.0-DEV0-testuser/deploy-sip-service-module-pack-1.0.0.0-DEV0-testuser.zip
[ivy:publish]   published ivy to /home/testuser/sentinel-express-sdk/repositories/sdk-local/UNSET/deploy-sip-service/1.0.0.0-DEV0-testuser/ivy.xml

publish-local:

BUILD SUCCESSFUL
Total time: 7 seconds

Setting up Rhino in the Sentinel Express SDK

Once the module is built, you can deploy it into Rhino using the deployer. However, first you need to set up Rhino in the Sentinel Express SDK. You do this by:

Rhino SDK setup using the built-in bootstrap

The Sentinel Express SDK includes a built-in mechanism for using the Rhino SDK. This mechanism installs the Rhino SDK included in the SDK and sets it up under the rhino-sdk directory of your Sentinel Express SDK install. It includes commands to initialise and start the Rhino SDK. Once running, the various Rhino utilities are available under the rhino-sdk/RhinoSDK/client/bin directory.

Four steps are necessary to install a Rhino suitable for testing all the way from service deployment straight through to handled test network traffic:

1

Installation

Enter the rhino-sdk directory
and type ant install-rhino.

2

Licensing

Retrieve a suitable license and copy it over the file RhinoSDK/rhino-sdk.license.

Tip

This is the recommended method, since it works well with the start-clean-rhino target (should you find it necessary to start over with clean Rhino state at some point).

If you’ve accidentally started the Rhino SDK before performing this step, you’ll need to use the installlicense command in the Rhino console to install the new license file.

3

Starting

Type ant start-rhino.

Tip This command will continue to run until you shut down the RhinoSDK; so you may want to use a dedicated command shell for it.

Rhino will be operational when the the following message displays:

[exec] 2014-10-30 12:00:05.065  INFO    [rhino.sleestate]   <main> SLEE successfully started on node(s) [101]

Configuring an external Rhino location in the Sentinel Express SDK

If you want to use another version of Rhino (SDK or production) other than the one provided through the Sentinel Express SDK:

1

Download and install Rhino (production or SDK).

2

In the Sentinel Express SDK install directory, there is a file called sdk.properties. Edit this file, changing the value of the rhino.home variable — update it to point to your Rhino installation.

Note

By default, the Sentinel Express SDK shows the following:

# Location of Rhino instance
rhino.home=${sdk.root}/rhino-sdk/RhinoSDK

Here is an example where the user testuser unzipped the rhino-sdk-install.zip file into their home directory:

# Location of the Rhino instance
rhino.home=/home/testuser/RhinoSDK

3

Once this variable has been set, save the file, and start your Rhino.

The Sentinel Express SDK is now configured to use the user-defined Rhino.

Deploying the deployment module

Now that the Sentinel Express SDK has been configured with the location of Rhino, and Rhino is running, to deploy the deploy-sip-service module:

1

Enter the deploy-sip-service directory and type:

ant -Ddb.type=postgres -Dpostgres.jdbc.dir=$PWD/../rhino-sdk/RhinoSDK/lib deploy-with-deps
If…​ Then…​

You have not correctly configured the location of Rhino within your Sentinel Express SDK…​

You’ll see an error like this:

ant -Ddb.type=postgres -Dpostgres.jdbc.dir=$PWD/../rhino-sdk/RhinoSDK/lib deploy-with-deps
Buildfile: /home/testuser/sentinel-express-sdk/deploy-sip-service/build.xml

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/sentinel-express-sdk/build/ivy/offline-resolvers.xml
     [echo] Configuring Ivy with settings: /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/sentinel-express-sdk/release.properties" already exists.
[oc:index-properties] Index configuration has not changed since previous build.
[oc:index-properties] Index configuration uses dynamic revisions. Current version of indexes will be queried.
[oc:index-properties] Querying current version of: com.opencloud.rhino.sentinel-pack#sentinel-express-index;+
[oc:index-properties] Current version is: com.opencloud.rhino.sentinel-pack#sentinel-express-index;4.1.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/sentinel-express-sdk/release.properties" will not be regenerated.

init:

init-module:
     [echo] Resolving ivy configurations "*" for deploy-sip-service

deploy-with-deps:
     [echo] Deploying module.

BUILD FAILED
/home/testuser/sentinel-express-sdk/build/module-targets.xml:88: The following error occurred while executing this line:
/home/testuser/sentinel-express-sdk/build/toolchain-macrodefs.xml:22:  Unable to connect to rhino.
Underlying cause: java.io.FileNotFoundException: /home/testuser/sentinel-express-sdk/rhino-sdk/RhinoSDK/client/etc/client.properties (No such file or directory)

The Rhino location has been set properly, but Rhino has never been started…​

You’ll see the same kind of error as above.

You have correctly configured the location of Rhino within your Sentinel Express SDK, and started Rhino, but for some reason Rhino is no longer running…​

You’ll get an error like this:

ant -Ddb.type=postgres -Dpostgres.jdbc.dir=$PWD/../rhino-sdk/RhinoSDK/lib deploy-with-deps
Buildfile: /home/testuser/sentinel-express-sdk/deploy-sip-service/build.xml

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/sentinel-express-sdk/build/ivy/offline-resolvers.xml
     [echo] Configuring Ivy with settings: /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/sentinel-express-sdk/release.properties" already exists.
[oc:index-properties] Index configuration has not changed since previous build.
[oc:index-properties] Index configuration uses dynamic revisions. Current version of indexes will be queried.
[oc:index-properties] Querying current version of: com.opencloud.rhino.sentinel-pack#sentinel-express-index;+
[oc:index-properties] Current version is: com.opencloud.rhino.sentinel-pack#sentinel-express-index;4.1.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/sentinel-express-sdk/release.properties" will not be regenerated.

init:

init-module:
     [echo] Resolving ivy configurations "*" for deploy-sip-service

deploy-with-deps:
     [echo] Deploying module.
[oc:deploy] Connecting to Rhino ...

BUILD FAILED
/home/testuser/sentinel-express-sdk/build/default-targets.xml:85: The following error occurred while executing this line:
/home/testuser/sentinel-express-sdk/build/defaults.xml:508:  Unable to connect to rhino.
Underlying cause: com.opencloud.slee.remote.ConnectionException: Could not connect to Rhino:
  [localhost:1199] Connection refused
    -> This normally means Rhino is not running or the client is connecting to the wrong port.

The deployer fails with an error message stating 'Module has a new revision available' …​

This means that one or more dependent modules have newer revisions available in the repository. In order to proceed regardless add
-Ddeployer.latest-revision-revision-checks.enabled=false
to the deploy target:

ant -Ddb.type=postgres -Dpostgres.jdbc.dir=$PWD/../rhino-sdk/RhinoSDK/lib -Ddeployer.latest-revision-checks.enabled=false deploy-with-deps

All has been done correctly…​

The command will take several minutes. This is because it is downloading many components from the OpenCloud Repository, verifying them, and then installing them into the Rhino SDK.

Here’s some sample output (edited for brevity):

$ ant -Ddb.type=postgres -Dpostgres.jdbc.dir=$PWD/../rhino-sdk/RhinoSDK/lib -Ddeployer.latest-revision-checks.enabled=false deploy-with-deps
Buildfile: /home/testuser/sentinel-express-sdk/deploy-sip-service/build.xml

init-build-extensions:

pre-init-ivy-common:
pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/sentinel-express-sdk/build/ivy/offline-resolvers.xml
     [echo] Configuring Ivy with settings: /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/sentinel-express-sdk/release.properties" already exists.
[oc:index-properties] Index configuration has not changed since previous build.
[oc:index-properties] Index configuration uses dynamic revisions. Current version of indexes will be queried.
[oc:index-properties] Querying current version of: com.opencloud.rhino.sentinel-pack#sentinel-express-index;+
[oc:index-properties] Current version is: com.opencloud.rhino.sentinel-pack#sentinel-express-index;4.1.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/sentinel-express-sdk/release.properties" will not be regenerated.

init:

init-module:
     [echo] Resolving ivy configurations "*" for deploy-sip-service

deploy-with-deps:
     [echo] Deploying module.
[oc:deploy] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[oc:deploy] Created deployer with options: OutdatedIvyModuleDetection: Disabled, IvyStatusesToCheck: [integration]
[oc:deploy] Invoking the deployer to process root module UNSET#deploy-sip-service#trunk;1.0.0.0-DEV0-testuser and its dependencies ...
[oc:deploy] WARNING: Dependency order for module opencloud#sentinel-sip-full-deploy#sentinel-sip/4.1;4.1.0 mentions module sentinel-sip-sis-setup, which doesn't match any of opencloud#sentinel-sip-full-deploy#sentinel-sip/4.1;4.1.0's dependencies.
[oc:deploy] Installing module opencloud#fsmtool#fsmtool/1.1.0;1.1.0.11
[oc:deploy] Installing module opencloud#protobuf#cgin-connectivity/1.5.2;2.3.0.15
[oc:deploy] Installing module opencloud#sentinel-selection-key-library#sentinel-core/4.1;4.1.0

... edited for brevity ...

[oc:deploy] Installing module opencloud#sentinel-sip-subscribe-downstream-forking-feature-profile#sentinel-sip/4.1;4.1.0
[oc:deploy] Installing module opencloud#sentinel-sip-subscribe-downstream-forking-feature#sentinel-sip/4.1;4.1.0
[oc:deploy] Deployment Result:
[oc:deploy] ---------------------------------------------------------------------
[oc:deploy] |  Deploy result:
[oc:deploy] ---------------------------------------------------------------------
[oc:deploy] |  Already Deployed:
[oc:deploy] |  opencloud#sentinel-uniqueid-ra#sentinel-core/4.1;4.1.0
[oc:deploy] |  |__ ResourceAdaptorTypeID[name=UniqueID RA Type,vendor=OpenCloud,version=4.1]
[oc:deploy] |      ResourceAdaptorID[name=UniqueID RA,vendor=OpenCloud,version=4.1]
[oc:deploy] |  opencloud#cdr-ra#cdr-ra/2.2.0;2.2.0.3
[oc:deploy] |  |__ ResourceAdaptorTypeID[name=CDR Generation,vendor=OpenCloud,version=2.2]
[oc:deploy] |      ResourceAdaptorID[name=CDR Generation,vendor=OpenCloud,version=2.2]
[oc:deploy] ---------------------------------------------------------------------
[oc:deploy] |  Modules with no Component:
[oc:deploy] |  opencloud#sentinel-ocs#sentinel-core/4.1;4.1.0
[oc:deploy] |  opencloud#sentinel-cassandra-ra-deploy#sentinel-core/4.1;4.1.0

... edited for brevity ...

[oc:deploy] ---------------------------------------------------------------------
[oc:deploy] |  Deployed Modules:
[oc:deploy] |  opencloud#sentinel-sip-session-refresh-feature#sentinel-sip/4.1;4.1.0
[oc:deploy] |  |__ SbbPartID[name=sentinel-sip-session-refresh-feature,vendor=OpenCloud,version=4.1]
[oc:deploy] |  opencloud#sentinel-sip-b2bua-iec-prefeature#sentinel-sip/4.1;4.1.0
[oc:deploy] |  |__ SbbPartID[name=sentinel-sip-b2bua-iec-prefeature,vendor=OpenCloud,version=4.1]
[oc:deploy] |  opencloud#commons-jxpath-library#third-party;1.3.1-oc2
[oc:deploy] |  |__ LibraryID[name=commons-jxpath,vendor=opencloud,version=1.3.1-oc2]

... edited for brevity ...

[oc:deploy] ---------------------------------------------------------------------
[oc:deploy] All modules deployed successfully.
   [delete] Deleting directory /home/testuser/sentinel-express-sdk/deploy-sip-service/target/deployer-work

BUILD SUCCESSFUL
Total time: 3 minutes 49 seconds

Binding features into the services

Next bind the deployed services and features together by running:

ant -Dslee.binder.service-strategy=copy_if_active bind-with-deps

Use REM or rhino-console to view what has been deployed. You can also check the Rhino logs to get a feeling for typical output when installing a Sentinel service.

Here is some sample output:

$ ant -Dslee.binder.service-strategy=copy_if_active bind-with-deps
Buildfile: /home/testuser/sentinel-express-sdk/deploy-sip-service/build.xml

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/sentinel-express-sdk/build/ivy/offline-resolvers.xml
     [echo] Configuring Ivy with settings: /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/sentinel-express-sdk/release.properties" already exists.
[oc:index-properties] Index configuration has not changed since previous build.
[oc:index-properties] Index configuration uses dynamic revisions. Current version of indexes will be queried.
[oc:index-properties] Querying current version of: com.opencloud.rhino.sentinel-pack#sentinel-express-index;+
[oc:index-properties] Current version is: com.opencloud.rhino.sentinel-pack#sentinel-express-index;4.1.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/sentinel-express-sdk/release.properties" will not be regenerated.

init:

init-module:
     [echo] Resolving ivy configurations "*" for deploy-sip-service

bind-with-deps:
     [echo] Binding module.
  [oc:bind] Connecting to Rhino ...
  [oc:bind] Connected to Rhino.
  [oc:bind] Initialising Ivy.
  [oc:bind] :: loading settings :: file = /home/testuser/sentinel-express-sdk/build/ivy/ivysettings.xml
  [oc:bind] Creating binder.
  [oc:bind] Created binder with options: ServiceStrategy: COPY_IF_ACTIVE
  [oc:bind] Finished resolving dependencies.
  [oc:bind] Invoking the binder to process root module UNSET#deploy-sip-service#trunk;1.0.0.0-DEV0-testuser and its dependencies ...
  [oc:bind] Binding this module and its dependencies, where not already bound: UNSET#deploy-sip-service#trunk;1.0.0.0-DEV0-testuser
  [oc:bind] Processing root modules: [UNSET#deploy-sip-service#trunk;1.0.0.0-DEV0-testuser] ...
  [oc:bind] Bindings installed (t=133ms)
  [oc:bind] Enqueued bindings with ID 'BindingDescriptorID[name=sentinel-core-promotions-support-sbbpart-sentinel.sip-bindings,vendor=opencloud,version=4.1]' for module 'opencloud#sentinel-core-promotions-support-sbbpart#sentinel-core/4.1;4.1.0'.

  ... edited for brevity ...

  [oc:bind] Finished processing root modules.
  [oc:bind] Bind Result:
  [oc:bind] ---------------------------------------------------------------------
  [oc:bind] |  Bind result:
  [oc:bind] ---------------------------------------------------------------------
  [oc:bind] |  Successfully processed modules:
  [oc:bind] |  opencloud#sentinel-sip-session-refresh-feature#sentinel-sip/4.1;4.1.0
  [oc:bind] |  |__ ModuleBindResult{resultParts=[bindings installed, bindings applied for service ServiceID[name=sentinel.sip,vendor=OpenCloud,version=4.1.0]]}
  [oc:bind] |  opencloud#sentinel-cassandra-ra-deploy#sentinel-core/4.1;4.1.0
  [oc:bind] |  |__ ModuleBindResult{resultParts=[no bindings in module]}
  [oc:bind] |  opencloud#sentinel-sip-b2bua-iec-prefeature#sentinel-sip/4.1;4.1.0
  [oc:bind] |  |__ ModuleBindResult{resultParts=[bindings installed, bindings applied for service ServiceID[name=sentinel.sip,vendor=OpenCloud,version=4.1.0]]}

 ... edited for brevity ...

 [oc:bind] ---------------------------------------------------------------------
  [oc:bind] ---------------------------------------------------------------------
  [oc:bind] |  Created service copies:
  [oc:bind] |  ServiceID[name=sentinel.sip,vendor=OpenCloud,version=4.1.0-copy#1]
  [oc:bind] |  |__ copied from ServiceID[name=sentinel.sip,vendor=OpenCloud,version=4.1.0]
  [oc:bind] ---------------------------------------------------------------------
  [oc:bind] All modules bound successfully.

BUILD SUCCESSFUL
Total time: 41 seconds

Configuring the services

Once the services have been deployed, before running any calls through, they must be configured.

The SDK creates an 'out-of-the-box' example configuration when it makes the deployment module. The example configuration files are in the config directory in the deployment module.

To configure the services:

Enter the deployment module directory, and type:

ant configure-with-deps


Next steps

After installing the SDK, follow the tutorials to:

Previous page Next page