4. Remote Administration¶
This section provides documentation on Routing Service remote administration.
Note
Routing Service remote administration is based on the RTI Remote Administration Platform described in Section 11.2. We recommend that you read that section before using Routing Service remote administration.
Below you will find an API reference for all the supported operations.
4.1. Overview¶
4.1.1. Enabling Remote Administration¶
By default, remote administration is disabled in Routing Service. To enable remote
administration, you can use the <administration>
tag
(see Section 3.5.1) or the
-remoteAdministrationDomainId
command-line parameter, which enables
remote administration and sets the domain ID for remote communication
(see Section 2.1).
4.1.2. Available Service Resources¶
Table 4.1 lists the public resources specific to Routing Service. Each resource identifier is expressed as a hierarchical sequence of identifiers, including parent and target resources. (See Section 11.1.1.1 for details.)
In the table below, the elements (rs)
, (dr)
, (c)
, (s)
,
(ar)
, (r)
, (i)
, and (o)
refer to the name of an entity of the
corresponding class as specified in the configuration in the name
attribute. For example, in the following configuration:
<routing_service name="MyRouter">...</routing_service>
The resource identifier is:
/routing_services/MyRouter
In the table, the resource identifier is written as /routing_services/(rs), where (rs) is the routing service name, (dr) is the domain route name, and so on. This nomenclature is used in the table to give you an idea of the structure of the resource identifiers. For actual (example) resource identifier names, see the example section that follows.
Resource | Resource Identifier |
---|---|
RoutingService | /routing_services/(rs) |
DomainRoute | /routing_services/(rs)/domain_routes/(dr) |
Connection or Participant | /routing_services/(rs)/domain_routes/(dr)/connections/(c) |
Session | /routing_services/(rs)/domain_routes/(dr)/sessions/(s) |
AutoRoute or AutoTopicRoute | /routing_services/(rs)/domain_routes/(dr)/sessions/(s)/auto_routes/(ar) |
Route or TopicRoute | /routing_services/(rs)/domain_routes/(dr)/sessions/(s)/routes/(r) |
Route Input or DDS Input | /routing_services/(rs)/domain_routes/(dr)/sessions/(s)/routes/(r)/inputs/(i) |
Route Output or DDS Output | /routing_services/(rs)/domain_routes/(dr)/sssions/(s)/routes/(r)/outputs/(i) |
4.1.2.1. Example¶
This example shows you how to address a resource of each possible resource class in Routing Service, using the example configuration in Section 4.3 as a reference. (For a complete reference of the available configuration tags used in Routing Service, see Section 3.5.)
RoutingService
Entity with name “MyRouter”:
<routing_service name="MyRouter">...</routing_service>
Resource identifier:
/routing_services/MyRouter
DomainRoute
Entity with name “MyDomainRoute” in parent “MyRouter”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute">...</domain_route> </routing_service>
Resource identifier:
/routing_services/MyRouter/domain_routes/MyDomainRoute
Participant
Entity with name “MyParticipant” in parent “MyDomainRoute”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute"> <participant name="Session">...</participant> </domain_route> </routing_service>
Resource identifier:
/routing_services/MyRouter/domain_routes/MyDomainRoute/connections/MyParticipant
Session
Entity with name “MySession” in parent “MyDomainRoute”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute"> <session name="MySession">...</session> </domain_route> </routing_service>
Resource identifier:
/routing_services/MyRouter/domain_routes/MyDomainRoute/sessions/MySession
AutoTopicRoute (or AutoRoute)
Entity with name “MyAutoTopicRoute” in parent “MySession”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute"> <session name="MySession"> <auto_topic_route name="MyAutoTopicRoute">...</auto_topic_route> </session> </domain_route> </routing_service>
Resource identifier (all on one line):
/routing_services/MyRouter/domain_routes/MyDomainRoute/sessions/MySession/ routes/MyTopicRoute
TopicRoute (or Route)
Entity with name “MyTopicRoute” in parent “MySession”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute"> <session name="MySession"> <topic_route name="MyTopicRoute">...</topic_route> </session> </domain_route> </routing_service>
Resource identifier (all on one line):
/routing_services/MyRouter/domain_routes/MyDomainRoute/sessions/MySession/ routes/MyTopicRoute
Input
Entity with name “MyInput” in parent “MyTopicRoute”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute"> <session name="MySession"> <topic_route name="MyTopicRoute"> <input name="MyInput">...</input> </topic_route> </session> </domain_route> </routing_service>
Resource identifier (all on one line):
/routing_services/MyRouter/domain_routes/MyDomainRoute/sessions/MySession/ routes/MyRoute/inputs/MyInput
Output
Entity with name “MyOutput” in parent “MyTopicRoute”:
<routing_service name="MyRouter"> <domain_route name="MyDomainRoute"> <session name="MySession"> <topic_route name="MyTopicRoute"> <output name="MyOutput">...</output> </topic_route> </session> </domain_route> </routing_service>
Resource identifier (all on one line):
/routing_services/MyRouter/domain_routes/MyDomainRoute/sessions/MySession/ routes/MyRoute/outputs/MyOutput
4.1.3. Resource Object Representations¶
Resource Representation | Format (all element type definitions are from the file rti_routing_service.xsd) |
---|---|
ddsObjectRepresentation | <xs:element name="dds"
type="ddsRouter"/>
|
routerObjectRepresentation | <xs:element name="routing_service"
type="routingService"/>
|
domainRouteObjectRepresentation | <xs:element name="domain_route"
type="domainRoute"/>
|
connectionObjectRepresentation | <xs:element name="connection"
type="domainRouteConnection"/>
|
participantObjectRepresentation | <xs:element name="participant"
type="domainRouteParticipant"/>
|
sessionObjectRepresentation | <xs:element name="session"
type="routerSession"/>
|
autoRouteObjectRepresentation | <xs:element name="auto_route"
type="autoRoute"/>
|
autoTopicRouteObjectRepresentation | <xs:element name="auto_topic_route"
type="autoTopicRoute"/>
|
routeObjectRepresentation | <xs:element name="route"
type="route"/>
|
topicRouteObjectRepresentation | <xs:element name="topic_route"
type="topicRoute"/>
|
inputObjectRepresentation | <xs:element name="input"
type="routeStreamPort"/>
|
outputObjectRepresentation | <xs:element name="output"
type="routeStreamPort"/>
|
ddsInputObjectRepresentation | <xs:element name="input"
type="topicRouteInput"/>
<xs:element name="dds_input"
type="topicRouteInput"/>
|
ddsOutputObjectRepresentation | <xs:element name="output"
type="topicRouteOutput"/>
<xs:element name="dds_output"
type="topicRouteOutput"/>
|
4.2. API Reference¶
This section documents each remote operation, organized by service resource class.
4.2.1. Remote API Overview¶
Note
To improve readability, <SERVICE>
is sometimes used in place of
the service resource portion of the resource identifier (e.g.,
/routing_services/(rs) or /routing_services/MyService). It
does not represent valid syntax.
4.2.2. Service¶
-
CREATE /routing_services/(rs)/domain_routes
Operation
create_domain_route
Creates a DomainRoute object from its domainRouteObjectRepresentation (see Table 4.2).
See Create Resource (Section 11.2.3.1).
Example
Create a DomainRoute with name “NewDomainRoute” under RoutingService “MyRouter”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes string_body
str\://\"<domain_route name=\"NewDomainRoute\"> ... </domain_route>"
The newly created object has the resource identifier:
/routing_services/MyRouter/domain_routes/NewDomainRoute
-
CREATE /routing_services/(rs)/config
Operation
load
Loads a new configuration for the service from its ddsObjectRepresentation (see Table 4.2).
If the RoutingService is already loaded, this operation will unload it first.
The provided configuration must contain a valid RoutingService configuration with the same name that the initial configuration used when the service was first instantiated.
If the operation fails, the service will remain in an unloaded state.
Request body
string_body
: a valid RoutingService XML configuration document provided asfile://
orstr://
.
Reply body
- Empty.
Example
Load a new configuration in RoutingService “MyRouter”.
Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/config string_body
str://"<dds> ... <qos_library name="QosLibrary"> ... </qos_library> ... <routing_service name="MyRouter"> ... </routing_service> </dds>"
-
GET /routing_services/(rs)
Operation:
get
Returns a snapshot of the currently loaded full XML configuration as ddsObjectRepresentation (see Table 4.2).
See Get Resource (Section 11.2.3.2).
Example reply body:
<routing_service name="MyRouter> <administration>...</administration> ... </routing_service>
-
UPDATE /routing_services/(rs)
Operation:
update
Updates the specified RoutingService object.
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of routerObjectRepresentation and contains only parameters valid for the update.
Example
Update a RoutingService with the name “MyRouter”.
Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter string_body
str://\"<routing_service> ... </routing_service>"
-
UPDATE /routing_services/(rs)/state
Operation:
set_state
Sets the state of a RoutingService object.
See Set Resource State (Section 11.2.3.4).
Valid requested states:
STARTED
STOPPED
PAUSED
RUNNING
Example
Enable a RoutingService with the name “MyRouter”.
Request Field Value action
UPDATE resource_identifier
/routing_services/MyRouter/state octet_body
to_cdr_buffer(RTI::Service::EntityStateKind::ENABLED)
-
UPDATE /routing_services/(rs):save
Operation:
save
Dumps the currently loaded XML configuration into a file.
The output file is specified by the
save_path
configuration tag. Thesave
operation will fail if thesave_path
has not been configured.Request body
- Empty.
Reply body
- Empty.
-
DELETE /routing_services/(rs)/domain_routes/(dr)
Operation
delete_domain_route
Deletes the specified DomainRoute.
See Delete Resource (Section 11.2.3.5).
-
DELETE /routing_services/(rs)/config
Operation
unload
Unloads the current configuration of the service. If the RoutingService is enabled, this operation will disable it first. Upon a successful request, the service will remain in an unloaded state and no other operations can be made until a configuration is loaded.
Request body
- Empty.
Reply body
- Empty.
-
DELETE /routing_services/(rs)
Operation
shutdown
Initiates the shutdown sequence on the process where the RoutingService object runs.
- If RoutingService runs as a process executed by the shipped executable in the RTI Connext DDS installation, the process will exit upon receipt of the command.
- If RoutingService is instantiated as a library in your application, the service instance will notify the installed remote shutdown hook.
In both cases, right before executing the shutdown sequence, RoutingService will send a reply indicating the result of the operation. Note that if the operation returns successfully, the reply may be lost and never received by remote clients, since all the contained entities are deleted, including the RTI Remote Administration Platform entities.
This operation can be invoked at any time during the lifecycle of the service.
Request body
- Empty.
Reply body
- Empty.
4.2.3. DomainRoute¶
-
CREATE /routing_services/(rs)/domain_routes/(dr)/sessions
Operation:
create_session
Creates a Session object from its sessionObjectRepresentation (see Table 4.2).
See Create Resource (Section 11.2.3.1).
Example
Create a Session with the name “NewSession” under the DomainRoute “MyDomainRoute”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/sessions string_body
str://"<session name="NewSession"> ... </session>"
The newly created object has the resource identifier:
<SERVICE>/domain_routes/NewDomainRoute/sessions/NewSession
-
UPDATE /routing_services/(rs)/domain_routes/(dr)
Operation:
update
Updates the specified DomainRoute object.
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of domainRouteObjectRepresentation and contains only parameters valid for the update.
Example
Update a DomainRoute with the name “MyDomainRoute” under the RoutingService “MyRouter”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute string_body
str://"<domain_route> ... </domain_route>"
-
UPDATE /routing_services/(rs)/domain_routes/(dr)/state
Operation:
set_state
Sets the state of a DomainRoute object.
See Set Resource State (Section 11.2.3.4).
Valid requested states:
ENABLED
DISABLED
Example
Enable a DomainRoute with the name “MyDomainRoute” under the RoutingService “MyRouter”.
Request Field Value action
UPDATE resource_identifier
/routing_services/MyRouter/domain_routers/MyDomainRoute/state octet_body
to_cdr_buffer(RTI::Service::EntityStateKind::ENABLED)
-
DELETE /routing_services/(rs)/domain_routes/(dr)/sessions/(s)
Operation
delete_session
Deletes the specified Session.See Delete Resource (Section 11.2.3.5).
Request body
- Empty.
Reply body
- Empty.
4.2.4. Connection¶
-
UPDATE <SERVICE>/domain_routes/(dr)/connections/(c):add_peer
Operation
add_peer
Adds a list of peers to the specified Connection.
The Connection implementation shall refer to a
<participant>
object.Request body
string_body
: A comma-separated list of peer descriptors, as described in peer descriptor format.Example peer descriptor list:
updv4://10.2.0.1,udpv4://239.255.0.1
Reply body
- Empty.
-
UPDATE <SERVICE>/domain_routes/(dr)/connections/(c)
Operation:
update
Updates the specified Connection object.
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of connectionObjectRepresentation or participantObjectRepresentation, and contains only parameters valid for the update.
Example
Update a Connection with the name “MyConnection” under the DomainRoute “MyDomainRoute”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ connections/MyConnectiom string_body
str://"<connection> ... </connection>"
-
UPDATE <SERVICE>/domain_routes/(dr)/connections/(c):remove_peer
Operation
remove_peer
Removes a list of peers from the specified Connection.
The Connection implementation shall refer to a
<participant>
object.Request body
string_body
: A comma-separated list of peer descriptors, as described in peer descriptor format.Example peer descriptor list:
updv4://10.2.0.1,udpv4://239.255.0.1
Reply body
- Empty.
4.2.5. Session¶
-
CREATE <SERVICE>/domain_routes/(dr)/sessions/(s)/auto_routes
Operation:
create_auto_route
Creates an AutoRoute or AutoTopicRoute object from its autoRouteObjectRepresentation or autoTopicRouteObjectRepresentation (see Table 4.2).
See Create Resource (Section 11.2.3.1).
Example
Create an AutoRoute with the name “NewAutoRoute” under the Session “MySession”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/auto_routes string_body
str://"<auto_route name="NewAutoRoute"> ... </auto_route>"
The newly created object has the resource identifier:
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/auto_routes/NewAutoRoute
-
CREATE <SERVICE>/domain_routes/(dr)/sessions/(s)/routes
Operation:
create_route
Creates a Route or TopicRoute object from its routeObjectRepresentation or topicRouteObjectRepresentation (see Table 4.2).
See Create Resource (Section 11.2.3.1).
Example
Create a Route with the name “NewRoute” under the Session “MySession”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/routes string_body
str://"<route name="NewRoute"> ... </route>"
The newly created object has the resource identifier:
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/routes/NewRoute
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)
Operation:
update
Updates the specified Session object.
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of sessionObjectRepresentation and contains only parameters valid for update.
Example
Update a Session with the name “MySession” under the DomainRoute “MyDomainRoute”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession string_body
str://"<session> ... </session>"
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/state
Operation:
set_state
Sets the state of a Session object.
See Set Resource State (Section 11.2.3.4).
Valid requested states:
ENABLED
DISABLED
Example
Enable a Session with the name “MySession” under the DomainRoute “MyDomainRoute”.
Request Field Value action
UPDATE resource_identifier
/routing_services/MyRouter/domain_routers/MyDomainRoute/ sessions/MySession/state octet_body
to_cdr_buffer(RTI::Service::EntityStateKind::ENABLED)
-
DELETE <SERVICE>/domain_routes/(dr)/sessions/(s)/auto_routes/(ar)
Operation
delete_auto_route
Deletes the specified AutoRoute.
See Delete Resource (Section 11.2.3.5).
-
DELETE <SERVICE>/domain_routes/(dr)/sessions/(s)/routes/(r)
Operation
delete_route
Deletes the specified Route.
See Delete Resource (Section 11.2.3.5).
4.2.6. AutoRoute¶
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/auto_routes/(ar)
Operation:
update
Updates the specified AutoRoute or AutoTopicRoute object.
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of autoRouteObjectRepresentation or autoTopicRouteObjectRepresentation, and contains only parameters valid for the update.
Example
Update an AutoRoute with the name “MyAutoRoute” under the Session “MySession”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/auto_routes/MyAutoRoute string_body
str://"<auto_route> ... </auto_route>"
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/auto_routes/(ar)/state
Operation:
set_state
Sets the state of an AutoRoute object.
See Set Resource State (Section 11.2.3.4).
Valid requested states:
ENABLED
DISABLED
RUNNING
PAUSED
Example
Pause an AutoRoute with the name “MyAutoRoute” under the Session “MySession”.
Request Field Value action
UPDATE resource_identifier
/routing_services/MyRouter/domain_routers/MyDomainRoute/ sessions/MySession/auto_routes/MyAutoRoutestate octet_body
to_cdr_buffer(RTI::Service::EntityStateKind::PAUSED)
4.2.7. Route¶
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/routes/(r)
Operation:
update
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of routeObjectRepresentation or topicRouteObjectRepresentation, and contains only parameters valid for the update.
Example
Update a Route with the name “MyRoute” under the Session “MySession”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/routes/MyRoute string_body
str://"<route> ... </route>"
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/routes/(r)/state
Operation:
set_state
Sets the state of a Route object.
See Set Resource State (Section 11.2.3.4).
Valid requested states:
ENABLED
DISABLED
RUNNING
PAUSED
Example
Pause a Route with the name “MyRoute” under the Session “MySession”.
Request Field Value action
UPDATE resource_identifier
/routing_services/MyRouter/domain_routers/MyDomainRoute/ sessions/MySession/routes/MyRoutestate octet_body
to_cdr_buffer(RTI::Service::EntityStateKind::PAUSED)
4.2.8. Input/Output¶
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/routes/(r)/inputs(i)
Operation:
update
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of routeInputObjectRepresentation or topicRouteInputObjectRepresentation, and contains only parameters valid for the update.
Example
Update Input with the name “MyInput” under the Route “MyRoute”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/routes/MyRoute/inputs/MyInput string_body
str://"<input> ... </input>"
-
UPDATE <SERVICE>/domain_routes/(dr)/sessions/(s)/routes/(r)/outputs(i)
Operation:
update
See Update Resource (Section 11.2.3.3).
The expected XML configuration is a subset of routeOutputObjectRepresentation or topicRouteOutputObjectRepresentation, and contains only parameters valid for the update.
Example
Update Output with the name “MyOutput” under the Route “MyRoute”, with its configuration provided as a
str://
scheme.Request Field Value action
CREATE resource_identifier
/routing_services/MyRouter/domain_routes/MyDomainRoute/ sessions/MySession/routes/MyRoute/outputs/MyOutput string_body
str://"<output> ... </output>"
4.3. Example: Configuration Reference¶
This configuration example shows how individual commands would apply to a valid Routing Service configuration.
<?xml version="1.0"?>
<dds>
<routing_service name="MyRouter">
<domain_route name="MyDomainRoute">
<participant name="MyParticipant">
<domain_id>0</domain_id>
</participant>
<connection name="MyConnection">
</connection>
... <!-- other connections/participants -->
<session name="MySession">
<auto_route name="MyAutoRoute">
<publish_with_original_timestamp>true</publish_with_original_timestamp>
...
<input name="MyInput">
...
<property>
...
</property>
</input>
<output name="MyOutput">
...
<property>
...
</property>
</output>
</auto_route>
<auto_topic_route name="MyAutoTopicRoute">
<publish_with_original_info>true</publish_with_original_info>
...
<input name="MyInput">
...
<datareader_qos>
...
</datareader_qos>
</input>
<output name="MyOutput">
...
<datawriter_qos>
...
</datawriter_qos>
</output>
</auto_topic_route>
... <!-- other auto (Topic) routes -->
<route name="MyRoute">
<route_types>true</route_types>
<input name="MyInput">
...
<property>
...
</property>
</input>
... <!-- other inputs -->
<output name="MyOutput">
...
<property>
...
</property>
</output>
... <!-- other outputs -->
</route>
... <!-- other (Topic) routes -->
<topic_route name="MyTopicRoute">
<route_types>true</route_types>
...
<input name="MyInput">
...
<datareader_qos>
...
</datareader_qos>
</input>
... <!-- other inputs -->
<output name="MyOutput">
...
<datawriter_qos>
...
</datawriter_qos>
</output>
... <!-- other outputs -->
</topic_route>
</session>
... <!-- other sessions -->
</domain_route>
... <!-- other domain routes -->
</routing_service>
</dds>