OSM client: Difference between revisions

From OSM Public Wiki
Jump to: navigation, search
mNo edit summary
No edit summary
Line 13: Line 13:
sudo add-apt-repository -y "deb [arch=amd64] https://osm-download.etsi.org/repository/osm/debian/ReleaseSIX stable devops osmclient"
sudo add-apt-repository -y "deb [arch=amd64] https://osm-download.etsi.org/repository/osm/debian/ReleaseSIX stable devops osmclient"
sudo apt-get update
sudo apt-get update
sudo -H pip install python-magic
sudo apt-get install python-osmclient
sudo apt-get install python-osmclient
```
```
Line 194: Line 195:
git clone https://osm.etsi.org/gerrit/osm/osmclient
git clone https://osm.etsi.org/gerrit/osm/osmclient
sudo -H pip install osmclient
sudo -H pip install osmclient
```
## Using osmclient as a library to interact with OSM
Assuming that you have installed python-osmclient package, it's pretty simple to write some Python code to interact with OSM.
### Simple Python code to get the list of NS packages
```python
from osmclient import client
from osmclient.common.exceptions import ClientException
hostname = "127.0.0.1"
myclient = client.Client(host=hostname, sol005=True)
resp = myclient.nsd.list()
print yaml.safe_dump(resp)
```
### Simple Python code to get the list of VNF packages from a specific user and project
The code will print for each package a pretty table, then the full details in yaml
```python
from osmclient import client
from osmclient.common.exceptions import ClientException
import yaml
from prettytable import PrettyTable
hostname = "127.0.0.1"
user = admin
password = admin
project = admin
kwargs = {}
if user is not None:
    kwargs['user']=user
if password is not None:
    kwargs['password']=password
if project is not None:
  kwargs['project']=project
myclient = client.Client(host=hostname, sol005=True, **kwargs)
resp = myclient.vnfd.list()
print yaml.safe_dump(resp)
```
```

Revision as of 16:51, 8 October 2019

Template:MARKDOWN

In those cases where you have an OSM already installed in a remote server, you might still want to operate it from your local computer using the OSM client. The OSM client provides you a client library and a command-line tool to operate OSM..

    1. Installation

OSM client comes bundled with OSM installation, so if you successfully installed OSM, you already have it.

In addition, you can also install it in a different computer. In order to install OSM client, you will need a Linux machine and follow this procedure.

```bash wget -qO - https://osm-download.etsi.org/repository/osm/debian/ReleaseSIX/OSM%20ETSI%20Release%20Key.gpg | sudo apt-key add – sudo add-apt-repository -y "deb [arch=amd64] https://osm-download.etsi.org/repository/osm/debian/ReleaseSIX stable devops osmclient" sudo apt-get update sudo -H pip install python-magic sudo apt-get install python-osmclient ```

    1. Usage (client commands)

Once installed, type “osm” to see a list of commands. If installed in a host different from where OSM is running, at minimum you will need to specify the OSM host, either via an environment variable or via the osm command line (see “osm --help” for info).

```bash export OSM_HOSTNAME="127.0.0.1" ```

    • Usage:**

```bash osm [OPTIONS] COMMAND [ARGS]... ```

    • Options:**

```bash

 --hostname TEXT  hostname of server.  Also can set OSM_HOSTNAME in
                  environment
 --user TEXT      user (defaults to admin). Also can set OSM_USER in
                  environment
 --password TEXT  password (defaults to admin). Also can set OSM_PASSWORD in
                  environment
 --project TEXT   project (defaults to admin). Also can set OSM_PROJECT in
                  environment
 --help           Show this message and exit.

```

    • Commands:**

```bash

 netslice-instance-create   creates a new Network Slice Instance
 netslice-instance-delete   deletes a Network Slice Instance (NSI)
 netslice-instance-list     list all Network Slice Instances (NSI)
 netslice-instance-op-list  shows the history of operations over a...
 netslice-instance-op-show  shows the info of an operation over a Network
                            Slice Instance(NSI)
 netslice-instance-show     shows the content of a Network Slice Instance
                            (NSI)
 netslice-template-create   creates a new Network Slice Template (NST)
 netslice-template-delete   deletes a Network Slice Template (NST)
 netslice-template-list     list all Network Slice Templates (NST) in the...
 netslice-template-show     shows the content of a Network Slice Template
                            (NST)
 netslice-template-update   updates a Network Slice Template (NST)
 nf-list                    list all NF instances Options: --ns TEXT NS...
 nfpkg-create               creates a new NFpkg
 nfpkg-delete               deletes a NFpkg
 nfpkg-list                 list all NF pkg (VNF pkg, PNF pkg, HNF pkg)...
 nfpkg-show                 shows the content of a NF Descriptor
 nfpkg-update               updates a NFpkg
 ns-action                  executes an action/primitive over a NS...
 ns-alarm-create            creates a new alarm for a NS instance
 ns-create                  creates a new Network Service instance
 ns-delete                  deletes a NS instance
 ns-list                    list all NS instances Options: --filter...
 ns-metric-export           exports a metric to the internal OSM bus,...
 ns-op-list                 shows the history of operations over a NS...
 ns-op-show                 shows the info of an operation
 ns-show                    shows the info of a NS instance
 nsd-create                 creates a new NSD/NSpkg
 nsd-delete                 deletes a NSD/NSpkg
 nsd-list                   list all NSD/NS pkg in the system
 nsd-show                   shows the content of a NSD
 nsd-update                 updates a NSD/NSpkg
 nsi-create                 creates a new Network Slice Instance
 nsi-delete                 deletes a Network Slice Instance (NSI)
 nsi-list                   list all Network Slice Instances (NSI)
 nsi-op-list                shows the history of operations over a...
 nsi-op-show                shows the info of an operation over a Network
                            Slice Instance(NSI)
 nsi-show                   shows the content of a Network Slice Instance
                            (NSI)
 nspkg-create               creates a new NSD/NSpkg
 nspkg-delete               deletes a NSD/NSpkg
 nspkg-list                 list all NSD/NS pkg in the system
 nspkg-show                 shows the content of a NSD
 nspkg-update               updates a NSD/NSpkg
 nst-create                 creates a new Network Slice Template (NST)
 nst-delete                 deletes a Network Slice Template (NST)
 nst-list                   list all Network Slice Templates (NST) in the...
 nst-show                   shows the content of a Network Slice Template
                            (NST)
 nst-update                 updates a Network Slice Template (NST)
 pdu-create                 adds a new Physical Deployment Unit to the
                            catalog
 pdu-delete                 deletes a Physical Deployment Unit (PDU)
 pdu-list                   list all Physical Deployment Units (PDU)
 pdu-show                   shows the content of a Physical Deployment Unit
                            (PDU)
 project-create             Creates a new project NAME: name of the...
 project-delete             deletes a project NAME: name or ID of the...
 project-list               list all projects
 project-show               shows the details of a project NAME: name or...
 project-update             Update a project name :param ctx: :param...
 role-create                creates a role
 role-delete                deletes a role
 role-list                  list all roles
 role-show                  show specific role
 role-update                updates a role
 sdnc-create                creates a new SDN controller
 sdnc-delete                deletes an SDN controller NAME: name or ID of...
 sdnc-list                  list all SDN controllers
 sdnc-show                  shows the details of an SDN controller NAME:...
 sdnc-update                updates an SDN controller
 upload-package             uploads a VNF package or NS package FILENAME:...
 user-create                Creates a new user USERNAME: name of the...
 user-delete                deletes a user NAME: name or ID of the user...
 user-list                  list all users
 user-show                  shows the details of a user NAME: name or ID...
 user-update                Update a user information USERNAME: name of...
 vim-create                 creates a new VIM account
 vim-delete                 deletes a VIM account NAME: name or ID of the...
 vim-list                   list all VIM accounts
 vim-show                   shows the details of a VIM account NAME: name...
 vim-update                 updates a VIM account
 vnf-list                   list all NF instances
 vnf-scale                  Executes a VNF scale (adding/removing VDUs)...
 vnf-show                   shows the info of a VNF instance
 vnfd-create                creates a new VNFD/VNFpkg
 vnfd-delete                deletes a VNFD/VNFpkg
 vnfd-list                  list all VNFD/VNF pkg in the system
 vnfd-show                  shows the content of a VNFD
 vnfd-update                updates a new VNFD/VNFpkg
 vnfpkg-create              creates a new VNFD/VNFpkg
 vnfpkg-delete              deletes a VNFD/VNFpkg
 vnfpkg-list                list all VNFD/VNF pkg in the system
 vnfpkg-show                shows the content of a VNFD
 vnfpkg-update              updates a VNFD/VNFpkg
 wim-create                 creates a new WIM account
 wim-delete                 deletes a WIM account NAME: name or ID of the...
 wim-list                   list all WIM accounts
 wim-show                   shows the details of a WIM account NAME: name...
 wim-update                 updates a WIM account

```

    1. Enable autocompletion

You can enable autocompletion in OSM client by creating a file osm-complete.sh in the following way:

```bash mkdir -p $HOME/.bash_completion.d _OSM_COMPLETE=source osm > $HOME/.bash_completion.d/osm-complete.sh ```

Then you can add the following to your $HOME/.bashrc file: ```bash . .bash_completion.d/osm-complete.sh ```

    1. Other installation methods
      1. Installing from git repo

```bash

  1. Ubuntu pre-requirements

sudo apt install python-pip libcurl4-gnutls-dev libgnutls-dev

  1. CentOS pre-requirements
  2. sudo yum install python-pip libcurl-devel gnutls-devel

sudo -H pip install python-magic

  1. Install OSM client from the git repo.
  2. You can install the latest client from master branch in this way:

sudo -H pip install git+https://osm.etsi.org/gerrit/osm/osmclient

  1. You could also install a specific tag/version in this way

sudo -H pip install git+https://osm.etsi.org/gerrit/osm/osmclient@v6.0.1 ```

      1. Installing from cloned repo (for developers)

```bash

  1. Ubuntu pre-requirements

sudo apt install python-pip libcurl4-gnutls-dev libgnutls-dev

  1. Make sure that
  2. sudo yum install python-pip libcurl-devel gnutls-devel

sudo -H pip install python-magic

  1. Clone the osmclient repo and install OSM client from the git repo.

git clone https://osm.etsi.org/gerrit/osm/osmclient sudo -H pip install osmclient ```

    1. Using osmclient as a library to interact with OSM

Assuming that you have installed python-osmclient package, it's pretty simple to write some Python code to interact with OSM.

      1. Simple Python code to get the list of NS packages

```python from osmclient import client from osmclient.common.exceptions import ClientException hostname = "127.0.0.1" myclient = client.Client(host=hostname, sol005=True) resp = myclient.nsd.list() print yaml.safe_dump(resp) ```

      1. Simple Python code to get the list of VNF packages from a specific user and project

The code will print for each package a pretty table, then the full details in yaml ```python from osmclient import client from osmclient.common.exceptions import ClientException import yaml from prettytable import PrettyTable hostname = "127.0.0.1" user = admin password = admin project = admin kwargs = {} if user is not None:

   kwargs['user']=user

if password is not None:

   kwargs['password']=password

if project is not None:

  kwargs['project']=project

myclient = client.Client(host=hostname, sol005=True, **kwargs) resp = myclient.vnfd.list() print yaml.safe_dump(resp) ```