Add debug logs for some missing functions

Change-Id: I4819fb2335ecb348f60859424bcb61a4accf254d
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
2 files changed
tree: e0e216c32688e5e3a7e6027253c9521fab5ea7ab
  1. .gitignore
  2. .gitlab-ci.yml
  3. Dockerfile
  4. Jenkinsfile
  5. LICENSE
  6. MANIFEST.in
  7. README.md
  8. debian/
  9. devops-stages/
  10. osmclient/
  11. requirements-dev.in
  12. requirements-dev.txt
  13. requirements-dist.in
  14. requirements-dist.txt
  15. requirements-test.in
  16. requirements-test.txt
  17. requirements.in
  18. requirements.txt
  19. setup.py
  20. snap/
  21. stdeb.cfg
  22. tox.ini
README.md

python-osmclient

OSM client library and console script

Installation

# Ubuntu pre-requirements
sudo apt-get install python3-pip
# Centos pre-requirements
# sudo yum install python3-pip

Clone the osmclient repo:

git clone https://osm.etsi.org/gerrit/osm/osmclient
cd osmclient

Finally install osmclient with pip. For development, you should install osmclient in editable mode (--user -e):

# Install osmclient
python3 -m pip install --user . -r requirements.txt -r requirements-dev.txt
# Install osmclient in editable mode (-e)
# python3 -m pip install --user -e . -r requirements.txt -r requirements-dev.txt
# logout and login so that PATH can be updated. Executable osm will be found in /home/ubuntu/.local/bin

After logging out and in, you can check that osm is running with:

which osm
osm version

Setup

Set the OSM_HOSTNAME variable to the host of the OSM server (default: localhost).

localhost$ export OSM_HOSTNAME=<hostname>

Examples

upload vnfd

localhost$ osm upload-package ubuntu_xenial_vnf.tar.gz
{'transaction_id': 'ec12af77-1b91-4c84-b233-60f2c2c16d14'}
localhost$ osm vnfd-list
+--------------------+--------------------+
| vnfd name          | id                 |
+--------------------+--------------------+
| ubuntu_xenial_vnfd | ubuntu_xenial_vnfd |
+--------------------+--------------------+

upload nsd

localhost$ osm upload-package ubuntu_xenial_ns.tar.gz
{'transaction_id': 'b560c9cb-43e1-49ef-a2da-af7aab24ce9d'}
localhost$ osm nsd-list
+-------------------+-------------------+
| nsd name          | id                |
+-------------------+-------------------+
| ubuntu_xenial_nsd | ubuntu_xenial_nsd |
+-------------------+-------------------+

vim-list

localhost$ osm vim-list
+-------------+-----------------+--------------------------------------+
| ro-account  | datacenter name | uuid                                 |
+-------------+-----------------+--------------------------------------+
| osmopenmano | openstack-site  | 2ea04690-0e4a-11e7-89bc-00163e59ff0c |
+-------------+-----------------+--------------------------------------+

instantiate ns

localhost$ osm ns-create ubuntu_xenial_nsd testns openstack-site
{'success': ''}
localhost$ osm ns-list
+------------------+--------------------------------------+-------------------+--------------------+---------------+
| ns instance name | id                                   | catalog name      | operational status | config status |
+------------------+--------------------------------------+-------------------+--------------------+---------------+
| testns           | 6b0d2906-13d4-11e7-aa01-b8ac6f7d0c77 | ubuntu_xenial_nsd | running            | configured    |
+------------------+--------------------------------------+-------------------+--------------------+---------------+

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

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, indent=4, default_flow_style=False)

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

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, indent=4, default_flow_style=False)

Enable autocompletion

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

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_completion.d/osm-complete.sh

Future work

  • Option -c for list and show operations to filter output and show only selected columns
  • Option -o <FORMAT> to adapt output format (table, csv, yaml, json, jsonpath)
  • Command ns-status to show the deployment status (RO) and configuration status (VCA) in an appealing format
  • See how to deprecate commands and options: https://stackoverflow.com/questions/50366719/correct-way-to-deprecate-parameter-alias-in-click
  • Evaluate the possibility to re-structure code to uniform all commands: check, table_headers, run, output