$ contrail-api-cli --os-auth-plugin http \\
--os-username admin \\
--os-password paswword \\
--port 8095 \\
shell
from contrail_api_cli.client import SessionLoader
from contrail_api_cli.resource import Collection
from contrail_api_cli.context import Context
from contrail_api_cli.schema import DummySchema
session = SessionLoader().make(host="localhost",
port=8095,
os_username="admin",
os_password="password",
os_cacert=None,
os_cert=None,
insecure=False,
timeout=1)
Context().session = session
Context().schema = DummySchema()
print(len(Collection('virtual-network')))
$ contrail-api-cli --os-auth-plugin v2password \\
--os-username admin \\
--os-password paswword \\
--os-tenant-name tenant_name \\
--os-auth-url https://keystone:5000/v2.0/ \\
shell
Note
All parameters can be set in enviroment variables. For example, --os-auth-plugin looks for $OS_AUTH_PLUGIN.
--port and --host correspond to $CONTRAIL_API_(HOST|PORT)
All commands provides a --help option.
List all available commands.
.. automodule:: contrail_api_cli.commands.man :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.ls :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.du :members: :show-inheritance:
.. autoclass:: contrail_api_cli.commands.shell.Cd :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.cat :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.tree :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.rm :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.edit :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.schema :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.ln :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.relative :members: :show-inheritance:
.. automodule:: contrail_api_cli.commands.kv :members: :show-inheritance:
Any command can be piped to any program installed on the system inside the cli shell.
admin@localhost:/virtual-network> cat 1095e416-b7cd-4c65-b0a3-631e8263a4dd | grep dns
"dns_nameservers": [],
"dns_server_address": "192.168.21.2",
admin@localhost:/virtual-network> cat 1095e416-b7cd-4c65-b0a3-631e8263a4dd | jq '.network_ipam_refs[].attr.ipam_subnets[].dns_server_address'
"192.168.21.2"
You can call command directly from bash and pipe or redirect output as you wish.
$ contrail-api-cli ls /virtual-network
virtual-network/1095e416-b7cd-4c65-b0a3-631e8263a4dd
virtual-network/49d00de8-4351-446f-b6ee-d16dec3de413
virtual-network/5a9fbd42-a730-42f7-9947-be8a5d808b70
virtual-network/e3148147-164e-4194-8507-a58eefe072bd
virtual-network/ba2170ce-741c-4361-ad88-f2d97162faf2
virtual-network/e82ae164-f78a-4766-8ba2-7cb68dacaecb
The wildcards * and ? can be used in paths. All matching resources will be resolved.
Warning
Note that this does filtering on the cli side and not on the API side.
admin@localhost:/> ls -l virtual-network/default-domain:admin:*
virtual-network/49d00de8-4351-446f-b6ee-d16dec3de413 default-domain:admin:net2
virtual-network/5a9fbd42-a730-42f7-9947-be8a5d808b70 default-domain:admin:net1
Say you have a collection of commands in the contrail_api_cli.mycommands
entrypoint, run:
$ contrail_api_cli --ns contrail_api_cli.mycommands shell
The namespace contrail_api_cli.mycommands
commands will
be loaded as well as the commands of the default contrail_api_cli.command
namespace.
You can directly use contrail-api-cli API in a python console that can be
run with the python
command. If ptpython [1] or IPython [2] are
installed they will be used instead of the standard python repl.
admin@localhost:/> python
>>> c = Collection('virtual-network', fetch=True)
>>> for vn in c:
... print(vn.uuid)
0287b4d1-3aea-4a82-b1be-be524995d1a8
73fc0e08-b542-483e-86e7-f4a5aad2750f
bf91b645-f7aa-4ab3-88cf-dc7a6358c08c
a3694461-c4e0-4f54-a6fa-a11ae0472e04
6afc9f77-607f-424c-8188-996c9513467a
The exec command can be used to run a python script that is using the contrail_api_cli API. This avoids the need to setup the connection to the API server inside the script since the script will be run in the context of the cli.
$ contrail-api-cli exec my_script.py
[1] | https://github.com/jonathanslenders/ptpython |
[2] | https://ipython.org/ |