4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
8 http://www.apache.org/licenses/LICENSE-2.0
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14 See the License for the specific language governing permissions and
15 limitations under the License
19 OSM client library and console script
24 # Ubuntu pre-requirements
25 sudo apt-get install python3-pip
26 # Centos pre-requirements
27 # sudo yum install python3-pip
30 Clone the osmclient repo:
33 git clone https://osm.etsi.org/gerrit/osm/osmclient
37 Finally install osmclient with pip. For development, you should install osmclient in editable mode (`--user -e`):
41 python3 -m pip install --user . -r requirements.txt -r requirements-dev.txt
42 # Install osmclient in editable mode (-e)
43 # python3 -m pip install --user -e . -r requirements.txt -r requirements-dev.txt
44 # logout and login so that PATH can be updated. Executable osm will be found in /home/ubuntu/.local/bin
47 After logging out and in, you can check that osm is running with:
56 Set the OSM_HOSTNAME variable to the host of the OSM server (default: localhost).
59 localhost$ export OSM_HOSTNAME=<hostname>
67 localhost$ osm upload-package ubuntu_xenial_vnf.tar.gz
68 {'transaction_id': 'ec12af77-1b91-4c84-b233-60f2c2c16d14'}
69 localhost$ osm vnfd-list
70 +--------------------+--------------------+
72 +--------------------+--------------------+
73 | ubuntu_xenial_vnfd | ubuntu_xenial_vnfd |
74 +--------------------+--------------------+
80 localhost$ osm upload-package ubuntu_xenial_ns.tar.gz
81 {'transaction_id': 'b560c9cb-43e1-49ef-a2da-af7aab24ce9d'}
82 localhost$ osm nsd-list
83 +-------------------+-------------------+
85 +-------------------+-------------------+
86 | ubuntu_xenial_nsd | ubuntu_xenial_nsd |
87 +-------------------+-------------------+
93 localhost$ osm vim-list
94 +-------------+-----------------+--------------------------------------+
95 | ro-account | datacenter name | uuid |
96 +-------------+-----------------+--------------------------------------+
97 | osmopenmano | openstack-site | 2ea04690-0e4a-11e7-89bc-00163e59ff0c |
98 +-------------+-----------------+--------------------------------------+
104 localhost$ osm ns-create ubuntu_xenial_nsd testns openstack-site
106 localhost$ osm ns-list
107 +------------------+--------------------------------------+-------------------+--------------------+---------------+
108 | ns instance name | id | catalog name | operational status | config status |
109 +------------------+--------------------------------------+-------------------+--------------------+---------------+
110 | testns | 6b0d2906-13d4-11e7-aa01-b8ac6f7d0c77 | ubuntu_xenial_nsd | running | configured |
111 +------------------+--------------------------------------+-------------------+--------------------+---------------+
114 ## Using osmclient as a library to interact with OSM
116 Assuming that you have installed python-osmclient package, it's pretty simple to write some Python code to interact with OSM.
118 ### Simple Python code to get the list of NS packages
121 from osmclient import client
122 from osmclient.common.exceptions import ClientException
123 hostname = "127.0.0.1"
124 myclient = client.Client(host=hostname, sol005=True)
125 resp = myclient.nsd.list()
126 print yaml.safe_dump(resp, indent=4, default_flow_style=False)
129 ### Simple Python code to get the list of VNF packages from a specific user and project
131 The code will print for each package a pretty table, then the full details in yaml
134 from osmclient import client
135 from osmclient.common.exceptions import ClientException
137 from prettytable import PrettyTable
138 hostname = "127.0.0.1"
145 if password is not None:
146 kwargs['password']=password
147 if project is not None:
148 kwargs['project']=project
149 myclient = client.Client(host=hostname, sol005=True, **kwargs)
150 resp = myclient.vnfd.list()
151 print yaml.safe_dump(resp, indent=4, default_flow_style=False)
154 ## Enable autocompletion
156 You can enable autocompletion in OSM client by creating a file osm-complete.sh in the following way:
159 mkdir -p $HOME/.bash_completion.d
160 _OSM_COMPLETE=source osm > $HOME/.bash_completion.d/osm-complete.sh
163 Then you can add the following to your $HOME/.bashrc file:
166 . .bash_completion.d/osm-complete.sh
171 - Option `-c` for list and show operations to filter output and show only selected columns
172 - Option `-o <FORMAT>` to adapt output format (table, csv, yaml, json, jsonpath)
173 - Command ns-status to show the deployment status (RO) and configuration status (VCA) in an appealing format
174 - See how to deprecate commands and options: <https://stackoverflow.com/questions/50366719/correct-way-to-deprecate-parameter-alias-in-click>
175 - Evaluate the possibility to re-structure code to uniform all commands: `check`, `table_headers`, `run`, `output`