Note
Tutorial: install, configure, deploy

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

  • installing and configuring the Sentinel IP-SM-GW SDK

  • using of the sdkadm command for basic Sentinel IP-SM-GW 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 IPSMGW 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 IP-SM-GW SDK, download:

Prerequisite

Download URL

Java 11

RhinoSDK 3.0.0

Note The Sentinel IP-SM-GW SDK can download and set up a Rhino SDK for basic development purposes.

Sentinel IP-SM-GW SDK zip

Please download the most recent SDK version from the link above.

The Sentinel IP-SM-GW 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 IP-SM-GW 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 IP-SM-GW 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 IP-SM-GW SDK

To install the Sentinel IP-SM-GW SDK:

1

Unzip the ipsmgw-sdk.zip file into the directory location that will contain your Sentinel IP-SM-GW SDK.

$ unzip ipsmgw-sdk.zip
Archive:  ipsmgw-sdk.zip
   creating: ipsmgw-sdk/
   creating: ipsmgw-sdk/build/
   creating: ipsmgw-sdk/build/ant/
   creating: ipsmgw-sdk/build/bin/
   creating: ipsmgw-sdk/build/ivy/
   creating: ipsmgw-sdk/rhino-sdk/
  inflating: ipsmgw-sdk/.build
  inflating: ipsmgw-sdk/.gitignore
  inflating: ipsmgw-sdk/.sdk.root
  inflating: ipsmgw-sdk/README.txt
  inflating: ipsmgw-sdk/build.xml
  inflating: ipsmgw-sdk/build/.gitignore
  inflating: ipsmgw-sdk/build/.sdk.root
  inflating: ipsmgw-sdk/build/README.txt
  inflating: ipsmgw-sdk/build/ant/ant-build-support.jar
  inflating: ipsmgw-sdk/build/ant/ant-launcher.jar
  inflating: ipsmgw-sdk/build/ant/ant.jar
  inflating: ipsmgw-sdk/build/ant/ivy.jar
  inflating: ipsmgw-sdk/build/branch-targets.xml
  inflating: ipsmgw-sdk/build/build-ivy.xml
  inflating: ipsmgw-sdk/build/common.properties
  inflating: ipsmgw-sdk/build/common.xml
  inflating: ipsmgw-sdk/build/default-branch-targets.xml
  inflating: ipsmgw-sdk/build/default-targets.xml
  inflating: ipsmgw-sdk/build/deps.properties
  inflating: ipsmgw-sdk/build/dynamic-targets.xml
  inflating: ipsmgw-sdk/build/init.xml
  inflating: ipsmgw-sdk/build/ivy-common.xml
  inflating: ipsmgw-sdk/build/ivy/ivy-defaults.properties
  inflating: ipsmgw-sdk/build/ivy/ivysettings.xml
  inflating: ipsmgw-sdk/build/ivy/local-resolvers.xml
  inflating: ipsmgw-sdk/build/ivy/offline-resolvers.xml
  inflating: ipsmgw-sdk/build/ivy/online-resolvers.xml
  inflating: ipsmgw-sdk/build/ivy/resolvers-remote.xml
  inflating: ipsmgw-sdk/build/module-targets.xml
  inflating: ipsmgw-sdk/build/public-macrodefs.xml
  inflating: ipsmgw-sdk/build/sdk.version
  inflating: ipsmgw-sdk/build/sdkroot-targets.xml
  inflating: ipsmgw-sdk/build/targets.xml
  inflating: ipsmgw-sdk/build/toolchain-macrodefs.xml
  inflating: ipsmgw-sdk/deps.properties
  inflating: ipsmgw-sdk/rhino-sdk/.sdk.root
  inflating: ipsmgw-sdk/rhino-sdk/build.xml
  inflating: ipsmgw-sdk/rhino-sdk/rhino.properties
  inflating: ipsmgw-sdk/sdk.properties
  inflating: ipsmgw-sdk/build/bin/.sdk.root
  inflating: ipsmgw-sdk/build/bin/ant
  inflating: ipsmgw-sdk/build/bin/go-offline
  inflating: ipsmgw-sdk/build/bin/go-online
  inflating: ipsmgw-sdk/build/bin/sdkadm
  inflating: ipsmgw-sdk/build/bin/sentinel-rest-example
  inflating: ipsmgw-sdk/build/bin/installer
  inflating: ipsmgw-sdk/build/installer.xml

2

From the ipsmgw-sdk directory, type:

./build/bin/ant init-sdk

This command initialises the Sentinel IP-SM-GW SDK directory.

3

As part of the initialisation you may be asked to enter your Artifactory username and password. These credentials are supplied by OpenCloud in order to access the OpenCloud artifact repository. Once entered, the init-sdk command will retrieve appropriate tools and write them out under the build directory within your Sentinel IP-SM-GW SDK.

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

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:

Determining Ivy settings.

Checking ivy-defaults.properties for ivy settings.
 artifactory.host=${download.link.host}                             (from ivy-defaults.properties)
 artifactory.url=https://${artifactory.host}/artifactory         (from ivy-defaults.properties)
 ivy.cache.root=${sdk.root}/build/target/ivy-caches/online-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=${ivy.default.ivy.user.dir}/opencloud-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=resolvers-remote.xml       (from ivy-defaults.properties)
 ivy.sdk-resolvers.file.internal=resolvers-remote.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)
 artifactory.host=${download.link.host}                             (from ant environment)
 artifactory.password=********************************           (from ant environment)
 artifactory.url=https://${download.link.host}/artifactory          (from ant environment)
 artifactory.username=testuser                                       (from ant environment)
 ivy.symlinks=true                                               (from ant environment)

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

     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml

ivy-authentication-check:
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-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/ipsmgw-sdk/build/target/lib
    [touch] Creating /home/testuser/ipsmgw-sdk/build/target/lib/.lib.uptodate

update-index-properties:
[oc:index-properties] Resolving: opencloud#sentinel-express-index#sentinel-pack/4.0.0;latest.integration
[oc:index-properties] Copying /home/testuser/ipsmgw-sdk/build/target/ivy-caches/online-resolvers.cache/opencloud/sentinel-express-index/sentinel-pack/4.0.0/jsons/sentinel-express-index-4.0.0.0.json to /home/testuser/ipsmgw-sdk/build/target/lib/index/sentinel-express-index-4.0.0.0.json
[oc:index-properties] Reading Module metadata from index: /home/testuser/ipsmgw-sdk/build/target/lib/index/sentinel-express-index-4.0.0.0.json
[oc:index-properties] Writing dependency properties to: /home/testuser/ipsmgw-sdk/release.properties

init:

init-branch:

init-sdk:

BUILD SUCCESSFUL
Total time: 13 seconds

If the credentials are entered correctly you should observe a delay whilst downloading artifacts from Artifactory, and then see the following output:

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

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml

ivy-authentication-check:
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/ipsmgw-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: opencloud#sentinel-express-index#sentinel-pack/4.0.0;latest.integration
[oc:index-properties] Current version is: opencloud#sentinel-express-index#sentinel-pack/4.0.0;4.0.0.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/ipsmgw-sdk/release.properties" will not be regenerated.

init:

init-branch:

init-sdk:

BUILD SUCCESSFUL
Total time: 3 seconds

The Sentinel IP-SM-GW 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 IP-SM-GW 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 IP-SM-GW 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/ipsmgw-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 IP-SM-GW 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 ipsmgw-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 ipsmgw-sdk/build/ant
$ cp ivy.jar ant-build-support.jar ~/.ant/lib

The Sentinel IP-SM-GW SDK build scripts will not work without the above libraries.

First steps post-installation

After installing Sentinel IP-SM-GW 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 IP-SM-GW 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

opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0
opencloud#ipsmgw-mapra-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0
opencloud#sentinel-registrar-full-deploy#sentinel-registrar/4.0.0;4.0.0.0
opencloud#sentinel-registrar-test-full-deploy#sentinel-registrar/4.0.0;4.0.0.0
opencloud#sentinel-sip-full-deploy#sentinel-sip/4.0.0;4.0.0.0
opencloud#sentinel-sip-modules-deploy#sentinel-sip/4.0.0;4.0.0.0
opencloud#sentinel-sip-test-full-deploy#sentinel-sip/4.0.0;4.0.0.0

7 modules matched search criteria out of a total possible 483.
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.

As can be seen, there is one Sentinel IPSMGW service-deployment module 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-ipsmgw deploy-ipsmgw opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0

The following dependencies will be included in the new module:
 opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0

Creating deployment module 'deploy-ipsmgw' in directory 'deploy-ipsmgw'.

downloading https://repo.opencloud.com/artifactory/opencloud-internal-snapshots/opencloud/sentinel-core/4.0.0/deployment-template/4.0.0.0/deployment-template-module-pack-4.0.0.0.zip ...
.. (2kB)
.. (0kB)
	[SUCCESSFUL ] opencloud#deployment-template#sentinel-core/4.0.0;4.0.0.0!deployment-template-module-pack.zip(module-pack) (236ms)
Populating '/home/testuser/ipsmgw-sdk/deploy-ipsmgw/config' with configuration artifacts.
downloading https://repo.opencloud.com/artifactory/opencloud-internal-snapshots/opencloud/sentinel-ipsmgw/4.0.0/ipsmgw-determine-network-operator-profile/4.0.0.0/ipsmgw-determine-network-operator-profile-config-4.0.0.0.zip ...
.. (0kB)
.. (0kB)
	[SUCCESSFUL ] opencloud#ipsmgw-determine-network-operator-profile#sentinel-ipsmgw/4.0.0;4.0.0.0!ipsmgw-determine-network-operator-profile-config.zip(config) (145ms)

... edited for brevity ...

downloading https://repo.opencloud.com/artifactory/opencloud-internal-snapshots/opencloud/sentinel-ipsmgw/4.0.0/ipsmgw-full-deploy/4.0.0.0/ipsmgw-full-deploy-config-4.0.0.0.properties ...
.. (0kB)
.. (0kB)
	[SUCCESSFUL ] opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0!ipsmgw-full-deploy-config.properties (148ms)
[warn] Default value for configuration property 'cdr.maxinterval' is being changed from '6000000' to '600000'. Please review.
[warn] Default value for configuration property 'cdr.maxlines' is being changed from '1000' to '0'. Please review.
[warn] Default value for configuration property 'cdr.maxsize' is being changed from '0' to '10000000'. Please review.
Finished writing deployment module to: /home/testuser/ipsmgw-sdk/deploy-ipsmgw

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/ipsmgw-sdk

Found 1 module:
 deploy-ipsmgw

The new module ipsmgw-deploy 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 ipsmgw-deploy. This contains the deployment module. Here’s what it includes:

$ cd deploy-ipsmgw/
/deploy-ipsmgw$ ls
build.xml  config  doc  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 ipsmgw-deploy module.
Type ant clean publish-local to build the module.

The output should look like this:

$ ant clean publish-local
Buildfile: /home/testuser/ipsmgw-sdk/build.xml

... edited for brevity ...

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

init:

init-branch:

publish-local-branch:
[oc:ivymultimodulebuild] Modules to be built: [UNSET#deploy-ipsmgw]
[oc:ivymultimodulebuild]
[oc:ivymultimodulebuild] ========================================
[oc:ivymultimodulebuild] Entering module UNSET#deploy-ipsmgw
[oc:ivymultimodulebuild] ========================================
[oc:ivymultimodulebuild]

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

init:

... edited for brevity ...

set-default-build-revision:

do-build:
     [echo] Initialising build extensions.
     [echo] Retrieving ivy configuration "antlib" into /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/libs/antlib
     [copy] Copying 1 file to /home/testuser/ipsmgw-sdk/deploy-ipsmgw/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/ipsmgw-sdk/deploy-ipsmgw/target/artifacts
     [echo]
     [echo]
    [touch] Creating /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/artifacts/deploy-ipsmgw-deploy.xml
     [echo]
     [copy] Copying 133 files to /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/generated/config
      [zip] Building zip: /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/artifacts/deploy-ipsmgw-config.zip
     [copy] Copying 1 file to /home/testuser/ipsmgw-sdk/deploy-ipsmgw/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/ipsmgw-sdk/deploy-ipsmgw
     [echo]  module.pack.prepend.file=
     [echo]  module.pack.prepend.include.path=**/*.java
     [echo]  module.pack.prepend.exclude.path=
    [mkdir] Created dir: /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/module-pack
     [copy] Copying 139 files to /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/module-pack
[oc:update-module-pack-dependencies] Updating module-pack ivy dependencies for: /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/module-pack
[oc:update-module-pack-dependencies]
[oc:update-module-pack-dependencies]
[oc:verify-module-pack] Verifying module-pack content: /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/module-pack
[oc:verify-module-pack]
      [zip] Building zip: /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/artifacts/deploy-ipsmgw-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-ipsmgw#trunk;working@testmachine :: 1.0.0.0-DEV0-testuser :: integration :: Fri Apr 01 14:23:11 NZDT 2016
[ivy:publish] 	delivering ivy file to /home/testuser/ipsmgw-sdk/deploy-ipsmgw/target/artifacts/ivy.xml
[ivy:publish] :: publishing :: UNSET#deploy-ipsmgw
[ivy:publish] 	published deploy-ipsmgw-config to /home/testuser/.ivy2/opencloud-local/UNSET/trunk/deploy-ipsmgw/1.0.0.0-DEV0-testuser.part/deploy-ipsmgw-config-1.0.0.0-DEV0-testuser.zip
[ivy:publish] 	published deploy-ipsmgw-config to /home/testuser/.ivy2/opencloud-local/UNSET/trunk/deploy-ipsmgw/1.0.0.0-DEV0-testuser.part/deploy-ipsmgw-config-1.0.0.0-DEV0-testuser.properties
[ivy:publish] 	published deploy-ipsmgw-module-pack to /home/testuser/.ivy2/opencloud-local/UNSET/trunk/deploy-ipsmgw/1.0.0.0-DEV0-testuser.part/deploy-ipsmgw-module-pack-1.0.0.0-DEV0-testuser.zip
[ivy:publish] 	published ivy to /home/testuser/.ivy2/opencloud-local/UNSET/trunk/deploy-ipsmgw/1.0.0.0-DEV0-testuser.part/ivy.xml
[ivy:publish] 	publish commited: moved /home/testuser/.ivy2/opencloud-local/UNSET/trunk/deploy-ipsmgw/1.0.0.0-DEV0-testuser.part
[ivy:publish] 		to /home/testuser/.ivy2/opencloud-local/UNSET/trunk/deploy-ipsmgw/1.0.0.0-DEV0-testuser
[oc:ivymultimodulebuild]
[oc:ivymultimodulebuild] ========================================
[oc:ivymultimodulebuild] Exiting module UNSET#deploy-ipsmgw
[oc:ivymultimodulebuild] ========================================
[oc:ivymultimodulebuild]
[oc:ivymultimodulebuild]
[oc:ivymultimodulebuild] ========================================
[oc:ivymultimodulebuild] Build Report:
[oc:ivymultimodulebuild] ========================================
[oc:ivymultimodulebuild]
[oc:ivymultimodulebuild] deploy-ipsmgw:
[oc:ivymultimodulebuild]     [SUCCESS]  (1m, 12.976s)
[oc:ivymultimodulebuild]         Tests: none

publish-local:

BUILD SUCCESSFUL
Total time: 1 minute 18 seconds

Setting up Rhino in the Sentinel IP-SM-GW 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 IP-SM-GW SDK. You do this by:

Rhino SDK setup using the built-in bootstrap

The Sentinel IP-SM-GW SDK includes a built-in mechanism for using the Rhino SDK. This mechanism downloads the Rhino SDK and sets it up under the rhino-sdk directory of your Sentinel IP-SM-GW 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 IP-SM-GW SDK

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

1

Download and install Rhino (production or SDK).

2

In the Sentinel IP-SM-GW 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 IP-SM-GW 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 IP-SM-GW SDK is now configured to use the user-defined Rhino.

Deploying the deployment module

Now that the Sentinel IP-SM-GW SDK has been configured with the location of Rhino, and Rhino is running, to deploy the ipsmgw-deploy module:

1

Enter the ipsmgw-deploy 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 IP-SM-GW 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/ipsmgw-sdk/deploy-sip-service/build.xml

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

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

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

BUILD FAILED
/home/testuser/ipsmgw-sdk/build/default-targets.xml:85: The following error occurred while executing this line:
/home/testuser/ipsmgw-sdk/build/defaults.xml:508:  Unable to connect to rhino.
Underlying cause: java.io.FileNotFoundException: /home/testuser/ipsmgw-sdk/rhino-sdk/rhino/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 IP-SM-GW 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/ipsmgw-sdk/deploy-sip-service/build.xml

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

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

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

BUILD FAILED
/home/testuser/ipsmgw-sdk/build/default-targets.xml:85: The following error occurred while executing this line:
/home/testuser/ipsmgw-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/ipsmgw-sdk/deploy-ipsmgw/build.xml

init-build-extensions:

pre-init-ivy-common:

init-ivy-common:
     [echo] Ivy Resolvers: /home/testuser/ipsmgw-sdk/build/ivy/resolvers-remote.xml
     [echo] Configuring Ivy with settings: /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
  [ivy:var] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ ::
  [ivy:var] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml

ivy-authentication-check:
[ivy:resolve] :: loading settings :: file = /home/testuser/ipsmgw-sdk/build/ivy/ivysettings.xml
     [echo] Build infrastructure lib/ directory is up to date.

update-index-properties:
[oc:index-properties] Properties file "/home/testuser/ipsmgw-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: opencloud#ipsmgw-index#sentinel-ipsmgw/4.0.0;latest.integration
[oc:index-properties] Current version is: opencloud#ipsmgw-index#sentinel-ipsmgw/4.0.0;4.0.0.0
[oc:index-properties] Currently available index versions are the same as previous build. Properties file "/home/testuser/ipsmgw-sdk/release.properties" will not be regenerated.

init:

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



deploy-with-deps:
     [echo] Deploying module.
[oc:deploy] :: loading settings :: file = /home/testuser/ipsmgw-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-ipsmgw#trunk;1.0.0.0-DEV0-testuser and its dependencies ...
[oc:deploy] WARNING: Dependency order for module opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0 mentions module sentinel-ocsip-deploy, which doesn't match any of opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0's dependencies.
[oc:deploy] WARNING: Dependency order for module opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0 mentions module sentinel-diameter-mediation-mappers, which doesn't match any of opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0's dependencies.
[oc:deploy] downloading https://repo.opencloud.com/artifactory/opencloud-internal-snapshots/opencloud/third-party/commons-jxpath-library/1.3/commons-jxpath-library-1.3.du.jar ...
[oc:deploy] .................. (267kB)
[oc:deploy] 	[SUCCESSFUL ] opencloud#commons-jxpath-library#third-party;1.3!commons-jxpath-library.du.jar (69ms)

... edited for brevity ...

[oc:deploy] Deployment Result:
[oc:deploy] ---------------------------------------------------------------------
[oc:deploy]

Deploy result: [oc:deploy] --------------------------------------------------------------------- [oc:deploy]

Already Deployed:

opencloud#sentinel-addresslist#sentinel-core/4.0.0;4.0.0.0 [oc:deploy]

__ ProfileSpecificationID[name=AddressListConfigurationProfile,vendor=OpenCloud,version=4.0.0] [oc:deploy]

LibraryID[name=SentinelAddressList,vendor=OpenCloud,version=4.0.0]

ProfileSpecificationID[name=AddressListEntryProfile,vendor=OpenCloud,version=4.0.0] [oc:deploy]

opencloud#sentinel-uniqueid-ra#sentinel-core/4.0.0;4.0.0.0

__ ResourceAdaptorTypeID[name=UniqueID RA Type,vendor=OpenCloud,version=4.0.0]

ResourceAdaptorID[name=UniqueID RA,vendor=OpenCloud,version=4.0.0] [oc:deploy]

opencloud#sentinel-profile-util-library#sentinel-core/4.0.0;4.0.0.0

__ LibraryID[name=sentinel-profile-util-library,vendor=OpenCloud,version=4.0.0]

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] ---------------------------------------------------------------------

Modules with no Component: [oc:deploy]

opencloud#ipsmgw-features#sentinel-ipsmgw/4.0.0;4.0.0.0

opencloud#ipsmgw-full-deploy#sentinel-ipsmgw/4.0.0;4.0.0.0

…​ edited for brevity …​

[oc:deploy] --------------------------------------------------------------------- [oc:deploy]

Deployed Modules:

opencloud#commons-jxpath-library#third-party;1.3.1-oc2 [oc:deploy]

__ LibraryID[name=commons-jxpath,vendor=opencloud,version=1.3.1-oc2] [oc:deploy]

opencloud#ipsmgw-determine-network-operator-feature#sentinel-ipsmgw/4.0.0;4.0.0.0

__ SbbPartID[name=ipsmgw-determine-network-operator-feature,vendor=OpenCloud,version=4.0.0]

opencloud#sentinel-sip-downstream-forking-feature#sentinel-sip/4.0.0;4.0.0.0 [oc:deploy]

__ SbbPartID[name=sentinel-sip-downstream-forking-feature,vendor=OpenCloud,version=4.0.0] [oc:deploy]

opencloud#sentinel-registrar-fetch-previous-registration-data-feature#sentinel-registrar/4.0.0;4.0.0.0

__ SbbPartID[name=sentinel-registrar-fetch-previous-registration-data-feature,vendor=OpenCloud,version=4.0.0]

opencloud#sentinel-diameter-mediation-promotions-db-query-config-profile#sentinel-core/4.0.0;4.0.0.0 [oc:deploy]

__ ProfileSpecificationID[name=PromotionsDbQueryConfigProfile,vendor=OpenCloud,version=4.0.0] [oc:deploy]

opencloud#sentinel-registrar-store-subscriber-data-feature#sentinel-registrar/4.0.0;4.0.0.0

__ SbbPartID[name=sentinel-registrar-store-subscriber-data-feature,vendor=OpenCloud,version=4.0.0]

  1. edited for brevity …​

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

BUILD SUCCESSFUL Total time: 7 minutes 26 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/ipsmgw-sdk/deploy-ipsmgw/build.xml

... edited for brevity ...

bind-with-deps:
     [echo] Binding module.
  [oc:bind] Connecting to Rhino ...
  [oc:bind] Connected to Rhino.
  [oc:bind] Initialising Ivy.

... 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#ipsmgw-features#sentinel-ipsmgw/4.0.0;4.0.0.0
  [oc:bind] |  |__ ModuleBindResult{resultParts=[no bindings in module]}
  [oc:bind] |  opencloud#commons-jxpath-library#third-party;1.3.1-oc2
  [oc:bind] |  |__ ModuleBindResult{resultParts=[no bindings in module]}
  [oc:bind] |  opencloud#ipsmgw-determine-network-operator-feature#sentinel-ipsmgw/4.0.0;4.0.0.0
  [oc:bind] |  |__ ModuleBindResult{resultParts=[bindings installed, bindings applied for service ServiceID[name=sentinel.ipsmgw,vendor=OpenCloud,version=4.0.0.0]]}
  [oc:bind] |  opencloud#sentinel-sip-downstream-forking-feature#sentinel-sip/4.0.0;4.0.0.0
  [oc:bind] |  |__ ModuleBindResult{resultParts=[bindings installed, bindings applied for service ServiceID[name=sentinel.ipsmgw,vendor=OpenCloud,version=4.0.0.0]]}

 ... edited for brevity ...

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

BUILD SUCCESSFUL
Total time: 1 minute 3 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