.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

.. image:: ../etc/opnfv-logo.png
  :height: 40
  :width: 200
  :alt: OPNFV
  :align: left
.. these two pipes are to seperate the logo from the first title
|
|
Using domino-cli Client
=======================
Prerequisites:

1. Make sure that domino-cli.py is in +x mode.

2. Change directory to where domino-cli.py, DominoClient.py and DominoServer.py are located or include file path in the PATH environment variable.

3. Start the Domino Server:

.. code-block:: bash

  ./DominoServer.py --log=debug

4. Start the Domino Client:

.. code-block:: bash

  ./DominoClient.py -p <portnumber> --log=debug

Note1: The default log level is WARNING and omitting --log option will lead to minimal/no logging on the console
Note2: domino_conf.py file includes most of the default values

* Registration Command

Command line input:

.. code-block:: bash

  ./domino-cli.py register

This message has the following fields that are automatically filled in.

.. code-block:: bash

  Message Type (= REGISTER)
  DESIRED UDID (= if not allocated, this will be assigned as Unique Domino ID)
  Sequence Number (=incremented after each RPC call)
  IP ADDR (= IP address of DOMINO Client to be used by DOMINO Server for future RPC Calls to this client)
  TCP PORT (= TCP port of DOMINO Client to be used by DOMINO Server for future RPC Calls to this client)
  Supported Templates (= Null, this field not used currently)

* Heart Beat Command

Command line input:

.. code-block:: bash

  ./domino-cli.py heartbeat

This message has the following fields that are automatically filled in.

.. code-block:: bash

  Message Type (= HEART_BEAT)
  UDID (= Unique Domino ID assigned during registration)
  Sequence Number (=incremented after each RPC call)

* Label and Template Type Subscription Command

.. code-block:: bash

  ./domino-cli.py subscribe -l <labelname> -t <templatetype>

Note that -l can be substituted by --label and -t can be substituted by --ttype.

More than one label or template type can be subscribed within the same command line as comma separated labels or template types

.. code-block:: bash

  ./domino-cli.py subscribe -l <label1>,<label2>,<labeln> -t <ttype1>,<ttype2>,<ttypen>

To subscribe more than one label or template type, one can also repeat the options -l and -t, e.g.:

.. code-block:: bash

  ./domino-cli.py subscribe -l <label1> -l <label2> -l <labeln> -t <ttype1> -t <ttype2> -t <ttypen>

It is safe to call subscribe command multiple times with duplicate labels.

This message has the following fields that are automatically filled in.

.. code-block:: bash

  Message Type (= SUBSCRIBE)
  UDID (= Unique Domino IDassigned during registration)
  Sequence Number (=incremented after each RPC call)
  Template Operation (= APPEND)
  Label Operation (= APPEND)

The following fields are filled in based on arguments passed on via -l/--label and -t/--ttype flags

Subscribe RPC also supports options for label using
  --lop=APPEND/DELETE/OVERWRITE
and for supported template types using
  --top=APPEND/DELETE/OVERWRITE.
When unspecified, the default is APPEND.
DELETE deletes existing labels (template types) specified in the current call via key -l/--label (-t/--ttype).
OVERWRITE removes the current set of labels (template types) and sets it to the new set of values passed in the same RPC call.

.. code-block:: bash

  Supported Template Types
  Supported Labels

* Template Publishing Command

.. code-block:: bash

  ./domino-cli.py publish -t <toscafile>

Note that -t can be substituted by --tosca-file.

If -t or --tosca-file flag is used multiple times, the last tosca file passed as input will be used. This usage is not recommended as undefined/unintended results may emerge as the Domino client will continue to publish.

This message has the following fields that are automatically filled in.

.. code-block:: bash

  Message Type (= SUBSCRIBE)
  UDID (= Unique Domino IDassigned during registration)
  Sequence Number (=incremented after each RPC call)
  Template Type (= TOSCA)
  Template File

Note: Current version of the code has a hardcoded CLI port number, so no two Domino Clients can be run in the same port name space.

Interactive CLI mode
====================
To enter this mode, start Domino Client with interactive console option set as true, i.e., --iac=true:

.. code-block:: bash

  ./DominoClient -p <portnumber> --iax=true --log=DEBUG

The rest of the API calls are the same as in the case of using domino-cli.py except that at the prompt there is no need to write domino-cli.py, e.g.,:

.. code-block:: bash

  >>register
  >>heartbeat
  >>subscribe -l <label1> -t <ttype1>
  >>publish -t <toscafile>

The interactive CLI mode is preferred for manual, single host testing (i.e., all domino clients and servers run in the same machine).

Revision: _sha1_

Build date: |today|