<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://osm.etsi.org/wikipub/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Berpec</id>
	<title>OSM Public Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://osm.etsi.org/wikipub/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Berpec"/>
	<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php/Special:Contributions/Berpec"/>
	<updated>2026-05-10T07:25:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Openstack_configuration_(Release_ONE)&amp;diff=1229</id>
		<title>Openstack configuration (Release ONE)</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Openstack_configuration_(Release_ONE)&amp;diff=1229"/>
		<updated>2017-03-06T14:47:26Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Configure openstack for OSM (basic)=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Guarantee that Openstack API endpoints are reachable from OSM (particularly from RO container)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Create a management network, with DHCP enabled, reachable from OSM (particularly from VCA container)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to create a management network, with DHCP enabled, and guarantee that this management network is reachable from OSM. The network is used by the VCA (Juju) for configuring the VNFs once they are running. It is recommended to create a provider network, isolated from Openstack. For instance, in order to create a provider network using physical interface em1 and VLAN 500 and with CIDR 10.208.0.0/24, you should run the following commands:&lt;br /&gt;
 neutron net-create mgmt --provider:network_type=vlan --provider:physical_network=physnet_em1 --provider:segmentation_id=500 --shared&lt;br /&gt;
 neutron subnet-create --name subnet-mgmt mgmt 10.208.0.0/24 --allocation-pool start=10.208.0.2,end=10.208.0.254&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create a valid tenant/user&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to create a tenant/user with rights to create/delete flavors. The easiest way is to create a user and assign it the role &amp;quot;admin&amp;quot;. Another option is to change the general flavor management policies at file &#039;&#039;/etc/nova/policy.json&#039;&#039; to allow flavor creation per user.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Upload images&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OSM will create the needed images into openstack at deployment time, but the process takes a long time and the provided path at VNFD must be accesible by OSM. For this reason, it is recommended to upload the images of the VNFs manually at openstack, using the following command:&lt;br /&gt;
&lt;br /&gt;
 openstack image create --file=&amp;quot;./cirros-0.3.4-x86_64-disk.img&amp;quot; --container-format=bare --disk-format=qcow2 --public --property location=&amp;quot;/mnt/powervault/virtualization/osm/CirrOS/cirros-0.3.4-x86_64-disk.img&amp;quot; cirros034&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Modify default security group or create a new one&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default openstack apply the &amp;quot;default&amp;quot; security group that blocks any incoming traffic to the VM. However ssh access is needed by VCA. You must modify the default security group to allow TCP port 22 or; create a new security group and configure RO to use this security group when datacenter is addeed (see [[Openstack_configuration_(Release_ONE)#Add openstack at OSM]] )&lt;br /&gt;
&lt;br /&gt;
=Configure openstack for OSM (EPA)=&lt;br /&gt;
&lt;br /&gt;
Besides the instructions above for any Openstack, you should do extra configuration to configure openstack for running VNFs which use SRIOV interfaces.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Provide a mechanism to connect the SR-IOV interfaces&#039;&#039;&#039;. As they are physical ports connected to an external switch, Neutron will not be able to connect them. You can use a physical switch programmed to interconnect the vlan tags among them (not recommened for security reasons). Another solution is to use a ML2 plugin that programs the external switch. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Configure the Neutron controller for using SR-IOV ports&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p&amp;gt;Edit /etc/neutron/plugins/ml2/ml2_conf.ini with the tag and vlan ranges used by the dataplane network&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [ml2_type_vlan] &lt;br /&gt;
  network_vlan_ranges = physnet_sriov:3000:3100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Configure the compute nodes for using SR-IOV&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On each compute node you have to associate the VFs available to each physical network. That is performed by configuring pci_passthrough_whitelist in /etc/nova/nova.conf. So, for example:&lt;br /&gt;
&lt;br /&gt;
 pci_passthrough_whitelist = {&amp;quot;vendor_id&amp;quot;:&amp;quot;8086&amp;quot;, &amp;quot;product_id&amp;quot;:&amp;quot;10ed&amp;quot;,&amp;quot;physical_network&amp;quot;:&amp;quot;physnet_sriov&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=Add openstack at OSM=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The v2.0 of the OpenStack API is deprecated since [https://review.openstack.org/#/c/251530/ Nov 30, 2015]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is a parameter called &#039;&#039;&#039;--config&#039;&#039;&#039; used to suply general guidelines both at datacenter creation and datacenter association to openmano tenant (this later precedes)&lt;br /&gt;
 openmano datacenter-create openstack-site http://10.10.10.11:5000/v2.0 --type openstack --description &amp;quot;OpenStack site&amp;quot; --config=&#039;{security_groups: default, keypair: mykey}&#039; &lt;br /&gt;
 openmano datacenter-attach openstack-site --user=admin --password=userpwd --vim-tenant-name=admin --config=&#039;{availability_zone: one}&#039;&lt;br /&gt;
&lt;br /&gt;
The following configuration can be added:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;security_groups&#039;&#039;&#039;:    To be used for the deployment&lt;br /&gt;
* &#039;&#039;&#039;availability_zone&#039;&#039;&#039;:  To be used for the deployment&lt;br /&gt;
* &#039;&#039;&#039;region_name&#039;&#039;&#039;:        The region where the VM must be deployed.&lt;br /&gt;
* &#039;&#039;&#039;insecure&#039;&#039;&#039;:           (By default false). When true it allows authorization over a non trusted certificate over https&lt;br /&gt;
* &#039;&#039;&#039;APIversion&#039;&#039;&#039;:         (By default v2.0). Set to &amp;quot;v3.3&amp;quot; to use this openstack API version (code on BETA)&lt;br /&gt;
&lt;br /&gt;
ADVANCED configuration:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;keypair&#039;&#039;&#039;:            To be added in addition to the keypair allocated on the VNF descriptor. Provide the name of a openstack keypair&lt;br /&gt;
* &#039;&#039;&#039;dataplane_physical_net&#039;&#039;&#039;: The configured network_vlan_ranges at neutron for SRIOV networks, e.g. &#039;physnet_sriov&#039; in the above configuration&lt;br /&gt;
* &#039;&#039;&#039;use_floating_ip&#039;&#039;&#039;:    (By default false). When true a management interface of a VNFD is automatically asigned a floating_ip -if possible-. The prefered method is to use a provider network&lt;br /&gt;
&lt;br /&gt;
The content of config is a yaml format text. The recomendation is to use a comma separated list between curly brackets {} and quotes, e.g.:&lt;br /&gt;
 --config=&#039;{use_floating_ip: True, availability_zone: controller}&#039;&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=OSM_Release_ONE&amp;diff=1228</id>
		<title>OSM Release ONE</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=OSM_Release_ONE&amp;diff=1228"/>
		<updated>2017-03-06T14:46:16Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source MANO (OSM) is the open source community that aims to deliver a production-quality MANO stack for NFV, capable of consuming openly published information models, available to everyone, suitable for all VNFs, operationally significant and VIM-independent. OSM is aligned to NFV ISG information models while providing first-hand feedback based on its implementation experience.&lt;br /&gt;
&lt;br /&gt;
{{#evu:https://www.youtube.com/watch?v=yBWSKwms47E&lt;br /&gt;
|alignment=right&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Interaction with VIMs and VNFs=&lt;br /&gt;
The following figure shows OSM interaction with VIM and VNFs.&lt;br /&gt;
&lt;br /&gt;
[[File:OSMconnectivity1.png|400px|OSM Release 1 connectivity 1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In simpler setups, OSM only requires a single interface as long as both VIM and VNF IP addresses are reachable&lt;br /&gt;
&lt;br /&gt;
[[File:OSMconnectivity2.png|400px|OSM Release 1 connectivity 2]]&lt;br /&gt;
&lt;br /&gt;
=Install OSM=&lt;br /&gt;
&lt;br /&gt;
==Install from source==&lt;br /&gt;
&lt;br /&gt;
All you need to run OSM Release One is a single server or VM with the following requirements:&lt;br /&gt;
* 8 CPUs, 16 GB RAM, 100GB disk and a single interface with Internet access&lt;br /&gt;
* Ubuntu16.04 as base image (http://releases.ubuntu.com/16.04/), configured to run LXD containers. If you don&#039;t have LXD configured, you can follow the instructions here ([[LXD configuration for OSM release 1|LXD configuration]]).&lt;br /&gt;
&lt;br /&gt;
Note: If you wish to install OSM Release One from inside a LXD container, you will need to enable nested containers following instructions here ([[LXD within LXD|Nested containers]]).&lt;br /&gt;
&lt;br /&gt;
Once you have prepared the host with the previous requirements, all you need to do is:&lt;br /&gt;
 wget https://osm-download.etsi.org/ftp/osm-1.0-one/install_from_source.sh&lt;br /&gt;
 chmod +x install_from_source.sh&lt;br /&gt;
 ./install_from_source.sh&lt;br /&gt;
If you need to install from latest master (recommended for advanced users only), please use,&lt;br /&gt;
 ./install_from_source.sh --develop&lt;br /&gt;
&lt;br /&gt;
After some time, you will get a fresh OSM Release One installation. You can access to the UI in the following URL (user:admin, password: admin):&lt;br /&gt;
&lt;br /&gt;
You can connect to the service via a web browser (Google Chrome version 50 or later is recommended). Open a browser and connect to https://1.2.3.4:8443 , replacing 1.2.3.4 with the IP address of your host. Note that it uses https, not http. Google Chrome is recommended. If you are using Firefox and plan to use the self-signed certificate provided in the installation, please follow instructions at [http://open.riftio.com/documentation/riftware/4.3/a/monitor/avoiding-selfsigned-certificate-warnings.htm#Using2 Using untrusted, self-signed certificates]&lt;br /&gt;
Alternatively, you can run Launchpad with trusted CA signed SSL certs as per [http://open.riftio.com/documentation/riftware/4.3/a/monitor/avoiding-selfsigned-certificate-warnings.htm#Using Using a certificate signed by a trusted CA]&lt;br /&gt;
or, run Launchpad with SSL disabled as per [http://open.riftio.com/documentation/riftware/4.3/a/user-guide/run-launchpad-with-ssl-disabled.htm?Highlight=disable Run Launchpad with SSL Disabled]&lt;br /&gt;
&lt;br /&gt;
[[File:OSMloginWindow.png|400px|OSM login window]]&lt;br /&gt;
&lt;br /&gt;
Make sure that port 8443 is accessible, as well as the following required ports: 8000, 4567, 8008, 80, 9090.&lt;br /&gt;
&lt;br /&gt;
As a result of the installation, three LXD containers are created in the host: RO, VCA, and SO-ub (running the SO and the UI), as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:OSMcontainers.png|400px|OSM Release ONE installation result]]&lt;br /&gt;
&lt;br /&gt;
=Adding a VIM account=&lt;br /&gt;
Before proceeding, make sure that you have a site with a VIM configured to run with OSM. Three different kinds of VIMs are currently supported by OSM:&lt;br /&gt;
*OpenVIM. Check the following link to know how to install and use openvim for OSM: [[OpenVIM installation (Release One)]]&lt;br /&gt;
*OpenStack. Check the following link to learn how to configure OpenStack to be used by OSM: [[Openstack configuration (Release ONE)]]&lt;br /&gt;
*VMware vCloud Director. Check the following link to learn how to configure VMware VCD to be used by OSM: [[Configuring VMware vCloud Director for OSM Release One]]&lt;br /&gt;
&lt;br /&gt;
==OpenVIM site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;openvim-site&amp;quot;, IP address: 10.10.10.10, VIM tenant: &amp;quot;osm&amp;quot;)&lt;br /&gt;
 export OPENMANO_TENANT=osm&lt;br /&gt;
 openmano datacenter-create openvim-site http://10.10.10.10:9080/openvim --type openvim --description &amp;quot;Openvim site&amp;quot; &lt;br /&gt;
 openmano datacenter-attach openvim-site --vim-tenant-name=osm&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
==Openstack site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;openstack-site&amp;quot;, IP address: 10.10.10.11, VIM tenant: &amp;quot;admin&amp;quot;, user: &amp;quot;admin&amp;quot;, password: &amp;quot;userpwd&amp;quot;)&lt;br /&gt;
&#039;&#039;&#039;This API of OpenStack is deprecated since [https://review.openstack.org/#/c/251530/ Nov 30, 2015]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 export OPENMANO_TENANT=osm&lt;br /&gt;
 openmano datacenter-create openstack-site http://10.10.10.11:5000/v2.0 --type openstack --description &amp;quot;OpenStack site&amp;quot;&lt;br /&gt;
 openmano datacenter-attach openstack-site --user=admin --password=userpwd --vim-tenant-name=admin&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
==VMware site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;vmware-site&amp;quot;, IP address: 10.10.10.12, VIM tenant: &amp;quot;vmware-tenant&amp;quot;, user: &amp;quot;osm&amp;quot;, password: &amp;quot;osm4u&amp;quot;, admin user: &amp;quot;admin&amp;quot;, admin password: &amp;quot;adminpwd&amp;quot;, organization: &amp;quot;orgVDC&amp;quot;)&lt;br /&gt;
 openmano datacenter-create vmware-site https://10.10.10.12 --type vmware --description &amp;quot;VMware site&amp;quot; --config &#039;{admin_password: adminpwd, admin_username: admin, orgname: orgVDC}&#039;&lt;br /&gt;
 openmano datacenter-attach vmware-site --user=osm --password=osm4u --vim-tenant-name=vmware-tenant&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
=Deploying your first Network Service=&lt;br /&gt;
In this example we will deploy the following Network Service, consisting of two simple VNFs based on CirrOS connected by a simple VLD.&lt;br /&gt;
&lt;br /&gt;
[[File:cirros_2vnf_ns.png|500px|NS with 2 CirrOS VNF]]&lt;br /&gt;
&lt;br /&gt;
Before going on, download the required VNF and NS packages from this URL: https://osm-download.etsi.org/ftp/examples/cirros_2vnf_ns/&lt;br /&gt;
&lt;br /&gt;
==Uploading VNF image to the VIM==&lt;br /&gt;
Get the cirros 0.3.4 image from the following link: http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img&lt;br /&gt;
&lt;br /&gt;
Then, onboard the image into the VIM. The instruction differs from one VIM to another:&lt;br /&gt;
*In Openstack:&lt;br /&gt;
 openstack image create --file=&amp;quot;./cirros-0.3.4-x86_64-disk.img&amp;quot; --container-format=bare --disk-format=qcow2 cirros034&lt;br /&gt;
*In openvim:&lt;br /&gt;
 #copy your image to the NFS shared folder (e.g. /mnt/openvim-nfs)&lt;br /&gt;
 cp ./cirros-0.3.4-x86_64-disk.img /mnt/openvim-nfs/&lt;br /&gt;
 openvim image-create --name cirros034 --path /mnt/openvim-nfs/cirros-0.3.4-x86_64-disk.img&lt;br /&gt;
&lt;br /&gt;
==Onboarding a VNF==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Catalog&lt;br /&gt;
**Click on the import button, then VNFD&lt;br /&gt;
**Drag and drop the VNF package file cirros_vnf.tar.gz in the importing area.&lt;br /&gt;
[[File:onboardingVNF.png|300px|Onboarding a VNF]]&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following:&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg -s 127.0.0.1 -u cirros_vnf.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Onboarding a NS==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Catalog&lt;br /&gt;
**Click on the import button, then NSD&lt;br /&gt;
**Drag and drop the NS package file cirros_2vnf_ns.tar.gz in the importing area.&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command:&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg -s 127.0.0.1  -u  cirros_2vnf_ns.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Instantiating the NS==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Launchpad &amp;gt; Instantiate&lt;br /&gt;
**Select the NS descriptor to be instantiated, and click on Next&lt;br /&gt;
**Add a name to the NS instance, and click on Launch.&lt;br /&gt;
[[File:instantiatingNS.png|300px|Instantiating a NS (step 1)]]                  [[File:instantiatingNS-step2.png|400px|Instantiating a NS (step 2)]]&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command:&lt;br /&gt;
&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg  -i &amp;lt;ns-instance-name&amp;gt;  -d &amp;lt;nsd-id&amp;gt; -D &amp;lt;data-center-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The nsd-id and data-center-id need to be replaced with the values from your setup.&lt;br /&gt;
Issue the following commands from the SO CLI(See the next section &amp;quot;Accessing CLI for viewing instantiated NS details&amp;quot; on how to access SO CLI) to determine the nsd-id and data-center-id,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;show nsd-catalog nsd &amp;lt;/code&amp;gt; - Displays the nsds in the catalog. Find the id of the cirros_2vnf_nsd NSD&lt;br /&gt;
* &amp;lt;code&amp;gt;show datacenters&amp;lt;/code&amp;gt; - Displays the list of data centers configured in the RO. Choose the data center where the network service need to be instantiated.&lt;br /&gt;
&lt;br /&gt;
Wait for the message that the NS has been successfully deployed, and that&#039;s all!&lt;br /&gt;
&lt;br /&gt;
== Accessing CLI for viewing instantiated NS details ==&lt;br /&gt;
&lt;br /&gt;
From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command to bring up SO CLI (username:admin password:admin)&lt;br /&gt;
&lt;br /&gt;
 /usr/rift/rift-shell -r -i /usr/rift -a /usr/rift/.artifacts -- rwcli --rift_var_root /usr/rift/var/rift&lt;br /&gt;
&lt;br /&gt;
The CLI can be used to both configure the system and show operational-data from the system. For instance:&lt;br /&gt;
  rift# show nsd-catalog # show the nsd catalog&lt;br /&gt;
  rift# show vnfd-catalog # show vnfd catalog&lt;br /&gt;
  rift# show ns-instance-config nsr # Lists instantiated network service&lt;br /&gt;
  rift# show ns-instance-opdata nsr # Lists of instantiated network service op-data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Interacting with the System via the SO REST APIs=&lt;br /&gt;
The following document describes how to interact with the systme using the SO REST APis.&lt;br /&gt;
&lt;br /&gt;
[[Media:Osm-r1-so-rest-api-guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
=Additional information=&lt;br /&gt;
&lt;br /&gt;
*Check other VNF packages and NS packages in the links below:&lt;br /&gt;
**VNF packages: https://osm-download.etsi.org/ftp/osm-1.0-one/vnf-packages&lt;br /&gt;
**NS packages: https://osm-download.etsi.org/ftp/osm-1.0-one/ns-packages&lt;br /&gt;
*[[Deploying advanced Network Services (Release ONE)|Deploy advanced Network Services]]&lt;br /&gt;
*[[Creating your own VNF package (Release ONE)|Create your own VNF package]]&lt;br /&gt;
*[[Reference VNF and NS Descriptors (Release ONE)|Reference VNF and NS Descriptors]]&lt;br /&gt;
*[[Creating your own VNF charm (Release_ONE)|Creating your own VNF charm]]&lt;br /&gt;
*[[How to report issues (Release ONE)|Have you detected any bug? Check this guide to see how to report issues]]&lt;br /&gt;
*[[Logs and troubleshooting (Release ONE)|Logs and troubleshooting]]&lt;br /&gt;
*[[Life Cycle Management of VNFs from the RO (Release ONE)|Life Cycle Management of VNFs from the RO]]&lt;br /&gt;
*[[Release ONE Data Model details|Data Model Details]]&lt;br /&gt;
*[https://osm.etsi.org/images/OSM-Whitepaper-TechContent-ReleaseONE-FINAL.pdf OSM White Paper - Release ONE Technical Overview]&lt;br /&gt;
*[[Release ONE Technical FAQ|Technical FAQ]]&lt;br /&gt;
&lt;br /&gt;
{{Feedback}}&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Openstack_configuration_(Release_ONE)&amp;diff=1227</id>
		<title>Openstack configuration (Release ONE)</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Openstack_configuration_(Release_ONE)&amp;diff=1227"/>
		<updated>2017-03-06T14:37:05Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Configure openstack for OSM (basic)=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Guarantee that Openstack API endpoints are reachable from OSM (particularly from RO container)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Create a management network, with DHCP enabled, reachable from OSM (particularly from VCA container)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to create a management network, with DHCP enabled, and guarantee that this management network is reachable from OSM. The network is used by the VCA (Juju) for configuring the VNFs once they are running. It is recommended to create a provider network, isolated from Openstack. For instance, in order to create a provider network using physical interface em1 and VLAN 500 and with CIDR 10.208.0.0/24, you should run the following commands:&lt;br /&gt;
 neutron net-create mgmt --provider:network_type=vlan --provider:physical_network=physnet_em1 --provider:segmentation_id=500 --shared&lt;br /&gt;
 neutron subnet-create --name subnet-mgmt mgmt 10.208.0.0/24 --allocation-pool start=10.208.0.2,end=10.208.0.254&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create a valid tenant/user&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to create a tenant/user with rights to create/delete flavors. The easiest way is to create a user and assign it the role &amp;quot;admin&amp;quot;. Another option is to change the general flavor management policies at file &#039;&#039;/etc/nova/policy.json&#039;&#039; to allow flavor creation per user.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Upload images&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OSM will create the needed images into openstack at deployment time, but the process takes a long time and the provided path at VNFD must be accesible by OSM. For this reason, it is recommended to upload the images of the VNFs manually at openstack, using the following command:&lt;br /&gt;
&lt;br /&gt;
 openstack image create --file=&amp;quot;./cirros-0.3.4-x86_64-disk.img&amp;quot; --container-format=bare --disk-format=qcow2 --public --property location=&amp;quot;/mnt/powervault/virtualization/osm/CirrOS/cirros-0.3.4-x86_64-disk.img&amp;quot; cirros034&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Modify default security group or create a new one&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default openstack apply the &amp;quot;default&amp;quot; security group that blocks any incoming traffic to the VM. However ssh access is needed by VCA. You must modify the default security group to allow TCP port 22 or; create a new security group and configure RO to use this security group when datacenter is addeed (see [[Openstack_configuration_(Release_ONE)#Add openstack at OSM]] )&lt;br /&gt;
&lt;br /&gt;
=Configure openstack for OSM (EPA)=&lt;br /&gt;
&lt;br /&gt;
Besides the instructions above for any Openstack, you should do extra configuration to configure openstack for running VNFs which use SRIOV interfaces.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Provide a mechanism to connect the SR-IOV interfaces&#039;&#039;&#039;. As they are physical ports connected to an external switch, Neutron will not be able to connect them. You can use a physical switch programmed to interconnect the vlan tags among them (not recommened for security reasons). Another solution is to use a ML2 plugin that programs the external switch. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Configure the Neutron controller for using SR-IOV ports&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p&amp;gt;Edit /etc/neutron/plugins/ml2/ml2_conf.ini with the tag and vlan ranges used by the dataplane network&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [ml2_type_vlan] &lt;br /&gt;
  network_vlan_ranges = physnet_sriov:3000:3100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Configure the compute nodes for using SR-IOV&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On each compute node you have to associate the VFs available to each physical network. That is performed by configuring pci_passthrough_whitelist in /etc/nova/nova.conf. So, for example:&lt;br /&gt;
&lt;br /&gt;
 pci_passthrough_whitelist = {&amp;quot;vendor_id&amp;quot;:&amp;quot;8086&amp;quot;, &amp;quot;product_id&amp;quot;:&amp;quot;10ed&amp;quot;,&amp;quot;physical_network&amp;quot;:&amp;quot;physnet_sriov&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=Add openstack at OSM=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The v2.0 of the OpenStack API is deprecated since [https://bugs.launchpad.net/openstack-manuals/+bug/1536422 2016-01-21]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is a parameter called &#039;&#039;&#039;--config&#039;&#039;&#039; used to suply general guidelines both at datacenter creation and datacenter association to openmano tenant (this later precedes)&lt;br /&gt;
 openmano datacenter-create openstack-site http://10.10.10.11:5000/v2.0 --type openstack --description &amp;quot;OpenStack site&amp;quot; --config=&#039;{security_groups: default, keypair: mykey}&#039; &lt;br /&gt;
 openmano datacenter-attach openstack-site --user=admin --password=userpwd --vim-tenant-name=admin --config=&#039;{availability_zone: one}&#039;&lt;br /&gt;
&lt;br /&gt;
The following configuration can be added:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;security_groups&#039;&#039;&#039;:    To be used for the deployment&lt;br /&gt;
* &#039;&#039;&#039;availability_zone&#039;&#039;&#039;:  To be used for the deployment&lt;br /&gt;
* &#039;&#039;&#039;region_name&#039;&#039;&#039;:        The region where the VM must be deployed.&lt;br /&gt;
* &#039;&#039;&#039;insecure&#039;&#039;&#039;:           (By default false). When true it allows authorization over a non trusted certificate over https&lt;br /&gt;
* &#039;&#039;&#039;APIversion&#039;&#039;&#039;:         (By default v2.0). Set to &amp;quot;v3.3&amp;quot; to use this openstack API version (code on BETA)&lt;br /&gt;
&lt;br /&gt;
ADVANCED configuration:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;keypair&#039;&#039;&#039;:            To be added in addition to the keypair allocated on the VNF descriptor. Provide the name of a openstack keypair&lt;br /&gt;
* &#039;&#039;&#039;dataplane_physical_net&#039;&#039;&#039;: The configured network_vlan_ranges at neutron for SRIOV networks, e.g. &#039;physnet_sriov&#039; in the above configuration&lt;br /&gt;
* &#039;&#039;&#039;use_floating_ip&#039;&#039;&#039;:    (By default false). When true a management interface of a VNFD is automatically asigned a floating_ip -if possible-. The prefered method is to use a provider network&lt;br /&gt;
&lt;br /&gt;
The content of config is a yaml format text. The recomendation is to use a comma separated list between curly brackets {} and quotes, e.g.:&lt;br /&gt;
 --config=&#039;{use_floating_ip: True, availability_zone: controller}&#039;&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=OSM_Release_ONE&amp;diff=1226</id>
		<title>OSM Release ONE</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=OSM_Release_ONE&amp;diff=1226"/>
		<updated>2017-03-06T14:35:44Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source MANO (OSM) is the open source community that aims to deliver a production-quality MANO stack for NFV, capable of consuming openly published information models, available to everyone, suitable for all VNFs, operationally significant and VIM-independent. OSM is aligned to NFV ISG information models while providing first-hand feedback based on its implementation experience.&lt;br /&gt;
&lt;br /&gt;
{{#evu:https://www.youtube.com/watch?v=yBWSKwms47E&lt;br /&gt;
|alignment=right&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Interaction with VIMs and VNFs=&lt;br /&gt;
The following figure shows OSM interaction with VIM and VNFs.&lt;br /&gt;
&lt;br /&gt;
[[File:OSMconnectivity1.png|400px|OSM Release 1 connectivity 1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In simpler setups, OSM only requires a single interface as long as both VIM and VNF IP addresses are reachable&lt;br /&gt;
&lt;br /&gt;
[[File:OSMconnectivity2.png|400px|OSM Release 1 connectivity 2]]&lt;br /&gt;
&lt;br /&gt;
=Install OSM=&lt;br /&gt;
&lt;br /&gt;
==Install from source==&lt;br /&gt;
&lt;br /&gt;
All you need to run OSM Release One is a single server or VM with the following requirements:&lt;br /&gt;
* 8 CPUs, 16 GB RAM, 100GB disk and a single interface with Internet access&lt;br /&gt;
* Ubuntu16.04 as base image (http://releases.ubuntu.com/16.04/), configured to run LXD containers. If you don&#039;t have LXD configured, you can follow the instructions here ([[LXD configuration for OSM release 1|LXD configuration]]).&lt;br /&gt;
&lt;br /&gt;
Note: If you wish to install OSM Release One from inside a LXD container, you will need to enable nested containers following instructions here ([[LXD within LXD|Nested containers]]).&lt;br /&gt;
&lt;br /&gt;
Once you have prepared the host with the previous requirements, all you need to do is:&lt;br /&gt;
 wget https://osm-download.etsi.org/ftp/osm-1.0-one/install_from_source.sh&lt;br /&gt;
 chmod +x install_from_source.sh&lt;br /&gt;
 ./install_from_source.sh&lt;br /&gt;
If you need to install from latest master (recommended for advanced users only), please use,&lt;br /&gt;
 ./install_from_source.sh --develop&lt;br /&gt;
&lt;br /&gt;
After some time, you will get a fresh OSM Release One installation. You can access to the UI in the following URL (user:admin, password: admin):&lt;br /&gt;
&lt;br /&gt;
You can connect to the service via a web browser (Google Chrome version 50 or later is recommended). Open a browser and connect to https://1.2.3.4:8443 , replacing 1.2.3.4 with the IP address of your host. Note that it uses https, not http. Google Chrome is recommended. If you are using Firefox and plan to use the self-signed certificate provided in the installation, please follow instructions at [http://open.riftio.com/documentation/riftware/4.3/a/monitor/avoiding-selfsigned-certificate-warnings.htm#Using2 Using untrusted, self-signed certificates]&lt;br /&gt;
Alternatively, you can run Launchpad with trusted CA signed SSL certs as per [http://open.riftio.com/documentation/riftware/4.3/a/monitor/avoiding-selfsigned-certificate-warnings.htm#Using Using a certificate signed by a trusted CA]&lt;br /&gt;
or, run Launchpad with SSL disabled as per [http://open.riftio.com/documentation/riftware/4.3/a/user-guide/run-launchpad-with-ssl-disabled.htm?Highlight=disable Run Launchpad with SSL Disabled]&lt;br /&gt;
&lt;br /&gt;
[[File:OSMloginWindow.png|400px|OSM login window]]&lt;br /&gt;
&lt;br /&gt;
Make sure that port 8443 is accessible, as well as the following required ports: 8000, 4567, 8008, 80, 9090.&lt;br /&gt;
&lt;br /&gt;
As a result of the installation, three LXD containers are created in the host: RO, VCA, and SO-ub (running the SO and the UI), as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:OSMcontainers.png|400px|OSM Release ONE installation result]]&lt;br /&gt;
&lt;br /&gt;
=Adding a VIM account=&lt;br /&gt;
Before proceeding, make sure that you have a site with a VIM configured to run with OSM. Three different kinds of VIMs are currently supported by OSM:&lt;br /&gt;
*OpenVIM. Check the following link to know how to install and use openvim for OSM: [[OpenVIM installation (Release One)]]&lt;br /&gt;
*OpenStack. Check the following link to learn how to configure OpenStack to be used by OSM: [[Openstack configuration (Release ONE)]]&lt;br /&gt;
*VMware vCloud Director. Check the following link to learn how to configure VMware VCD to be used by OSM: [[Configuring VMware vCloud Director for OSM Release One]]&lt;br /&gt;
&lt;br /&gt;
==OpenVIM site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;openvim-site&amp;quot;, IP address: 10.10.10.10, VIM tenant: &amp;quot;osm&amp;quot;)&lt;br /&gt;
 export OPENMANO_TENANT=osm&lt;br /&gt;
 openmano datacenter-create openvim-site http://10.10.10.10:9080/openvim --type openvim --description &amp;quot;Openvim site&amp;quot; &lt;br /&gt;
 openmano datacenter-attach openvim-site --vim-tenant-name=osm&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
==Openstack site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;openstack-site&amp;quot;, IP address: 10.10.10.11, VIM tenant: &amp;quot;admin&amp;quot;, user: &amp;quot;admin&amp;quot;, password: &amp;quot;userpwd&amp;quot;)&lt;br /&gt;
&#039;&#039;&#039;This API of OpenStack is deprecated since [https://bugs.launchpad.net/openstack-manuals/+bug/1536422 2016-01-21]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 export OPENMANO_TENANT=osm&lt;br /&gt;
 openmano datacenter-create openstack-site http://10.10.10.11:5000/v2.0 --type openstack --description &amp;quot;OpenStack site&amp;quot;&lt;br /&gt;
 openmano datacenter-attach openstack-site --user=admin --password=userpwd --vim-tenant-name=admin&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
==VMware site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;vmware-site&amp;quot;, IP address: 10.10.10.12, VIM tenant: &amp;quot;vmware-tenant&amp;quot;, user: &amp;quot;osm&amp;quot;, password: &amp;quot;osm4u&amp;quot;, admin user: &amp;quot;admin&amp;quot;, admin password: &amp;quot;adminpwd&amp;quot;, organization: &amp;quot;orgVDC&amp;quot;)&lt;br /&gt;
 openmano datacenter-create vmware-site https://10.10.10.12 --type vmware --description &amp;quot;VMware site&amp;quot; --config &#039;{admin_password: adminpwd, admin_username: admin, orgname: orgVDC}&#039;&lt;br /&gt;
 openmano datacenter-attach vmware-site --user=osm --password=osm4u --vim-tenant-name=vmware-tenant&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
=Deploying your first Network Service=&lt;br /&gt;
In this example we will deploy the following Network Service, consisting of two simple VNFs based on CirrOS connected by a simple VLD.&lt;br /&gt;
&lt;br /&gt;
[[File:cirros_2vnf_ns.png|500px|NS with 2 CirrOS VNF]]&lt;br /&gt;
&lt;br /&gt;
Before going on, download the required VNF and NS packages from this URL: https://osm-download.etsi.org/ftp/examples/cirros_2vnf_ns/&lt;br /&gt;
&lt;br /&gt;
==Uploading VNF image to the VIM==&lt;br /&gt;
Get the cirros 0.3.4 image from the following link: http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img&lt;br /&gt;
&lt;br /&gt;
Then, onboard the image into the VIM. The instruction differs from one VIM to another:&lt;br /&gt;
*In Openstack:&lt;br /&gt;
 openstack image create --file=&amp;quot;./cirros-0.3.4-x86_64-disk.img&amp;quot; --container-format=bare --disk-format=qcow2 cirros034&lt;br /&gt;
*In openvim:&lt;br /&gt;
 #copy your image to the NFS shared folder (e.g. /mnt/openvim-nfs)&lt;br /&gt;
 cp ./cirros-0.3.4-x86_64-disk.img /mnt/openvim-nfs/&lt;br /&gt;
 openvim image-create --name cirros034 --path /mnt/openvim-nfs/cirros-0.3.4-x86_64-disk.img&lt;br /&gt;
&lt;br /&gt;
==Onboarding a VNF==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Catalog&lt;br /&gt;
**Click on the import button, then VNFD&lt;br /&gt;
**Drag and drop the VNF package file cirros_vnf.tar.gz in the importing area.&lt;br /&gt;
[[File:onboardingVNF.png|300px|Onboarding a VNF]]&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following:&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg -s 127.0.0.1 -u cirros_vnf.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Onboarding a NS==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Catalog&lt;br /&gt;
**Click on the import button, then NSD&lt;br /&gt;
**Drag and drop the NS package file cirros_2vnf_ns.tar.gz in the importing area.&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command:&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg -s 127.0.0.1  -u  cirros_2vnf_ns.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Instantiating the NS==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Launchpad &amp;gt; Instantiate&lt;br /&gt;
**Select the NS descriptor to be instantiated, and click on Next&lt;br /&gt;
**Add a name to the NS instance, and click on Launch.&lt;br /&gt;
[[File:instantiatingNS.png|300px|Instantiating a NS (step 1)]]                  [[File:instantiatingNS-step2.png|400px|Instantiating a NS (step 2)]]&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command:&lt;br /&gt;
&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg  -i &amp;lt;ns-instance-name&amp;gt;  -d &amp;lt;nsd-id&amp;gt; -D &amp;lt;data-center-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The nsd-id and data-center-id need to be replaced with the values from your setup.&lt;br /&gt;
Issue the following commands from the SO CLI(See the next section &amp;quot;Accessing CLI for viewing instantiated NS details&amp;quot; on how to access SO CLI) to determine the nsd-id and data-center-id,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;show nsd-catalog nsd &amp;lt;/code&amp;gt; - Displays the nsds in the catalog. Find the id of the cirros_2vnf_nsd NSD&lt;br /&gt;
* &amp;lt;code&amp;gt;show datacenters&amp;lt;/code&amp;gt; - Displays the list of data centers configured in the RO. Choose the data center where the network service need to be instantiated.&lt;br /&gt;
&lt;br /&gt;
Wait for the message that the NS has been successfully deployed, and that&#039;s all!&lt;br /&gt;
&lt;br /&gt;
== Accessing CLI for viewing instantiated NS details ==&lt;br /&gt;
&lt;br /&gt;
From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command to bring up SO CLI (username:admin password:admin)&lt;br /&gt;
&lt;br /&gt;
 /usr/rift/rift-shell -r -i /usr/rift -a /usr/rift/.artifacts -- rwcli --rift_var_root /usr/rift/var/rift&lt;br /&gt;
&lt;br /&gt;
The CLI can be used to both configure the system and show operational-data from the system. For instance:&lt;br /&gt;
  rift# show nsd-catalog # show the nsd catalog&lt;br /&gt;
  rift# show vnfd-catalog # show vnfd catalog&lt;br /&gt;
  rift# show ns-instance-config nsr # Lists instantiated network service&lt;br /&gt;
  rift# show ns-instance-opdata nsr # Lists of instantiated network service op-data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Interacting with the System via the SO REST APIs=&lt;br /&gt;
The following document describes how to interact with the systme using the SO REST APis.&lt;br /&gt;
&lt;br /&gt;
[[Media:Osm-r1-so-rest-api-guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
=Additional information=&lt;br /&gt;
&lt;br /&gt;
*Check other VNF packages and NS packages in the links below:&lt;br /&gt;
**VNF packages: https://osm-download.etsi.org/ftp/osm-1.0-one/vnf-packages&lt;br /&gt;
**NS packages: https://osm-download.etsi.org/ftp/osm-1.0-one/ns-packages&lt;br /&gt;
*[[Deploying advanced Network Services (Release ONE)|Deploy advanced Network Services]]&lt;br /&gt;
*[[Creating your own VNF package (Release ONE)|Create your own VNF package]]&lt;br /&gt;
*[[Reference VNF and NS Descriptors (Release ONE)|Reference VNF and NS Descriptors]]&lt;br /&gt;
*[[Creating your own VNF charm (Release_ONE)|Creating your own VNF charm]]&lt;br /&gt;
*[[How to report issues (Release ONE)|Have you detected any bug? Check this guide to see how to report issues]]&lt;br /&gt;
*[[Logs and troubleshooting (Release ONE)|Logs and troubleshooting]]&lt;br /&gt;
*[[Life Cycle Management of VNFs from the RO (Release ONE)|Life Cycle Management of VNFs from the RO]]&lt;br /&gt;
*[[Release ONE Data Model details|Data Model Details]]&lt;br /&gt;
*[https://osm.etsi.org/images/OSM-Whitepaper-TechContent-ReleaseONE-FINAL.pdf OSM White Paper - Release ONE Technical Overview]&lt;br /&gt;
*[[Release ONE Technical FAQ|Technical FAQ]]&lt;br /&gt;
&lt;br /&gt;
{{Feedback}}&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=OSM_Release_ONE&amp;diff=1223</id>
		<title>OSM Release ONE</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=OSM_Release_ONE&amp;diff=1223"/>
		<updated>2017-03-03T14:08:02Z</updated>

		<summary type="html">&lt;p&gt;Berpec: fix typo in a command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Open Source MANO (OSM) is the open source community that aims to deliver a production-quality MANO stack for NFV, capable of consuming openly published information models, available to everyone, suitable for all VNFs, operationally significant and VIM-independent. OSM is aligned to NFV ISG information models while providing first-hand feedback based on its implementation experience.&lt;br /&gt;
&lt;br /&gt;
{{#evu:https://www.youtube.com/watch?v=yBWSKwms47E&lt;br /&gt;
|alignment=right&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Interaction with VIMs and VNFs=&lt;br /&gt;
The following figure shows OSM interaction with VIM and VNFs.&lt;br /&gt;
&lt;br /&gt;
[[File:OSMconnectivity1.png|400px|OSM Release 1 connectivity 1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In simpler setups, OSM only requires a single interface as long as both VIM and VNF IP addresses are reachable&lt;br /&gt;
&lt;br /&gt;
[[File:OSMconnectivity2.png|400px|OSM Release 1 connectivity 2]]&lt;br /&gt;
&lt;br /&gt;
=Install OSM=&lt;br /&gt;
&lt;br /&gt;
==Install from source==&lt;br /&gt;
&lt;br /&gt;
All you need to run OSM Release One is a single server or VM with the following requirements:&lt;br /&gt;
* 8 CPUs, 16 GB RAM, 100GB disk and a single interface with Internet access&lt;br /&gt;
* Ubuntu16.04 as base image (http://releases.ubuntu.com/16.04/), configured to run LXD containers. If you don&#039;t have LXD configured, you can follow the instructions here ([[LXD configuration for OSM release 1|LXD configuration]]).&lt;br /&gt;
&lt;br /&gt;
Note: If you wish to install OSM Release One from inside a LXD container, you will need to enable nested containers following instructions here ([[LXD within LXD|Nested containers]]).&lt;br /&gt;
&lt;br /&gt;
Once you have prepared the host with the previous requirements, all you need to do is:&lt;br /&gt;
 wget https://osm-download.etsi.org/ftp/osm-1.0-one/install_from_source.sh&lt;br /&gt;
 chmod +x install_from_source.sh&lt;br /&gt;
 ./install_from_source.sh&lt;br /&gt;
If you need to install from latest master (recommended for advanced users only), please use,&lt;br /&gt;
 ./install_from_source.sh --develop&lt;br /&gt;
&lt;br /&gt;
After some time, you will get a fresh OSM Release One installation. You can access to the UI in the following URL (user:admin, password: admin):&lt;br /&gt;
&lt;br /&gt;
You can connect to the service via a web browser (Google Chrome version 50 or later is recommended). Open a browser and connect to https://1.2.3.4:8443 , replacing 1.2.3.4 with the IP address of your host. Note that it uses https, not http. Google Chrome is recommended. If you are using Firefox and plan to use the self-signed certificate provided in the installation, please follow instructions at [http://open.riftio.com/documentation/riftware/4.3/a/monitor/avoiding-selfsigned-certificate-warnings.htm#Using2 Using untrusted, self-signed certificates]&lt;br /&gt;
Alternatively, you can run Launchpad with trusted CA signed SSL certs as per [http://open.riftio.com/documentation/riftware/4.3/a/monitor/avoiding-selfsigned-certificate-warnings.htm#Using Using a certificate signed by a trusted CA]&lt;br /&gt;
or, run Launchpad with SSL disabled as per [http://open.riftio.com/documentation/riftware/4.3/a/user-guide/run-launchpad-with-ssl-disabled.htm?Highlight=disable Run Launchpad with SSL Disabled]&lt;br /&gt;
&lt;br /&gt;
[[File:OSMloginWindow.png|400px|OSM login window]]&lt;br /&gt;
&lt;br /&gt;
Make sure that port 8443 is accessible, as well as the following required ports: 8000, 4567, 8008, 80, 9090.&lt;br /&gt;
&lt;br /&gt;
As a result of the installation, three LXD containers are created in the host: RO, VCA, and SO-ub (running the SO and the UI), as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:OSMcontainers.png|400px|OSM Release ONE installation result]]&lt;br /&gt;
&lt;br /&gt;
=Adding a VIM account=&lt;br /&gt;
Before proceeding, make sure that you have a site with a VIM configured to run with OSM. Three different kinds of VIMs are currently supported by OSM:&lt;br /&gt;
*OpenVIM. Check the following link to know how to install and use openvim for OSM: [[OpenVIM installation (Release One)]]&lt;br /&gt;
*OpenStack. Check the following link to learn how to configure OpenStack to be used by OSM: [[Openstack configuration (Release ONE)]]&lt;br /&gt;
*VMware vCloud Director. Check the following link to learn how to configure VMware VCD to be used by OSM: [[Configuring VMware vCloud Director for OSM Release One]]&lt;br /&gt;
&lt;br /&gt;
==OpenVIM site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;openvim-site&amp;quot;, IP address: 10.10.10.10, VIM tenant: &amp;quot;osm&amp;quot;)&lt;br /&gt;
 export OPENMANO_TENANT=osm&lt;br /&gt;
 openmano datacenter-create openvim-site http://10.10.10.10:9080/openvim --type openvim --description &amp;quot;Openvim site&amp;quot; &lt;br /&gt;
 openmano datacenter-attach openvim-site --vim-tenant-name=osm&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
==Openstack site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;openstack-site&amp;quot;, IP address: 10.10.10.11, VIM tenant: &amp;quot;admin&amp;quot;, user: &amp;quot;admin&amp;quot;, password: &amp;quot;userpwd&amp;quot;)&lt;br /&gt;
 export OPENMANO_TENANT=osm&lt;br /&gt;
 openmano datacenter-create openstack-site http://10.10.10.11:5000/v2.0 --type openstack --description &amp;quot;OpenStack site&amp;quot;&lt;br /&gt;
 openmano datacenter-attach openstack-site --user=admin --password=userpwd --vim-tenant-name=admin&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
==VMware site==&lt;br /&gt;
*Go into the RO container:&lt;br /&gt;
 lxc exec RO -- bash&lt;br /&gt;
*Execute the following commands, using the appropriate parameters (e.g. site name: &amp;quot;vmware-site&amp;quot;, IP address: 10.10.10.12, VIM tenant: &amp;quot;vmware-tenant&amp;quot;, user: &amp;quot;osm&amp;quot;, password: &amp;quot;osm4u&amp;quot;, admin user: &amp;quot;admin&amp;quot;, admin password: &amp;quot;adminpwd&amp;quot;, organization: &amp;quot;orgVDC&amp;quot;)&lt;br /&gt;
 openmano datacenter-create vmware-site https://10.10.10.12 --type vmware --description &amp;quot;VMware site&amp;quot; --config &#039;{admin_password: adminpwd, admin_username: admin, orgname: orgVDC}&#039;&lt;br /&gt;
 openmano datacenter-attach vmware-site --user=osm --password=osm4u --vim-tenant-name=vmware-tenant&lt;br /&gt;
 openmano datacenter-list&lt;br /&gt;
 exit     #or Ctrl+D to get out of the RO container&lt;br /&gt;
&lt;br /&gt;
=Deploying your first Network Service=&lt;br /&gt;
In this example we will deploy the following Network Service, consisting of two simple VNFs based on CirrOS connected by a simple VLD.&lt;br /&gt;
&lt;br /&gt;
[[File:cirros_2vnf_ns.png|500px|NS with 2 CirrOS VNF]]&lt;br /&gt;
&lt;br /&gt;
Before going on, download the required VNF and NS packages from this URL: https://osm-download.etsi.org/ftp/examples/cirros_2vnf_ns/&lt;br /&gt;
&lt;br /&gt;
==Uploading VNF image to the VIM==&lt;br /&gt;
Get the cirros 0.3.4 image from the following link: http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img&lt;br /&gt;
&lt;br /&gt;
Then, onboard the image into the VIM. The instruction differs from one VIM to another:&lt;br /&gt;
*In Openstack:&lt;br /&gt;
 openstack image create --file=&amp;quot;./cirros-0.3.4-x86_64-disk.img&amp;quot; --container-format=bare --disk-format=qcow2 cirros034&lt;br /&gt;
*In openvim:&lt;br /&gt;
 #copy your image to the NFS shared folder (e.g. /mnt/openvim-nfs)&lt;br /&gt;
 cp ./cirros-0.3.4-x86_64-disk.img /mnt/openvim-nfs/&lt;br /&gt;
 openvim image-create --name cirros034 --path /mnt/openvim-nfs/cirros-0.3.4-x86_64-disk.img&lt;br /&gt;
&lt;br /&gt;
==Onboarding a VNF==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Catalog&lt;br /&gt;
**Click on the import button, then VNFD&lt;br /&gt;
**Drag and drop the VNF package file cirros_vnf.tar.gz in the importing area.&lt;br /&gt;
[[File:onboardingVNF.png|300px|Onboarding a VNF]]&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following:&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg -s 127.0.0.1 -u cirros_vnf.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Onboarding a NS==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Catalog&lt;br /&gt;
**Click on the import button, then NSD&lt;br /&gt;
**Drag and drop the NS package file cirros_2vnf_ns.tar.gz in the importing area.&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command:&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg -s 127.0.0.1  -u  cirros_2vnf_ns.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Instantiating the NS==&lt;br /&gt;
*From the UI:&lt;br /&gt;
**Go to Launchpad &amp;gt; Instantiate&lt;br /&gt;
**Select the NS descriptor to be instantiated, and click on Next&lt;br /&gt;
**Add a name to the NS instance, and click on Launch.&lt;br /&gt;
[[File:instantiatingNS.png|300px|Instantiating a NS (step 1)]]                  [[File:instantiatingNS-step2.png|400px|Instantiating a NS (step 2)]]&lt;br /&gt;
*From the SO CLI:&lt;br /&gt;
**From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command:&lt;br /&gt;
&lt;br /&gt;
 /root/SO/rwlaunchpad/plugins/rwlaunchpadtasklet/scripts/onboard_pkg  -i &amp;lt;ns-instance-name&amp;gt;  -d &amp;lt;nsd-id&amp;gt; -D &amp;lt;data-center-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The nsd-id and data-center-id need to be replaced with the values from your setup.&lt;br /&gt;
Issue the following commands from the SO CLI(See the next section &amp;quot;Accessing CLI for viewing instantiated NS details&amp;quot; on how to access SO CLI) to determine the nsd-id and data-center-id,&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;code&amp;gt;show nsd-catalog nsd &amp;lt;/code&amp;gt; - Displays the nsds in the catalog. Find the id of the cirros_2vnf_nsd NSD&lt;br /&gt;
** &amp;lt;code&amp;gt;show datacenters&amp;lt;/code&amp;gt; - Displays the list of data centers configured in the RO. Choose the data center where the network service need to be instantiated.&lt;br /&gt;
&lt;br /&gt;
Wait for the message that the NS has been successfully deployed, and that&#039;s all!&lt;br /&gt;
&lt;br /&gt;
== Accessing CLI for viewing instantiated NS details ==&lt;br /&gt;
&lt;br /&gt;
From the SO-ub container (&amp;quot;lxc exec SO-ub bash&amp;quot;), execute the following command to bring up SO CLI (username:admin password:admin)&lt;br /&gt;
&lt;br /&gt;
 /usr/rift/rift-shell -r -i /usr/rift -a /usr/rift/.artifacts -- rwcli --rift_var_root /usr/rift/var/rift&lt;br /&gt;
&lt;br /&gt;
The CLI can be used to both configure the system and show operational-data from the system. For instance:&lt;br /&gt;
  rift# show nsd-catalog # show the nsd catalog&lt;br /&gt;
  rift# show vnfd-catalog # show vnfd catalog&lt;br /&gt;
  rift# show ns-instance-config nsr # Lists instantiated network service&lt;br /&gt;
  rift# show ns-instance-opdata nsr # Lists of instantiated network service op-data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Interacting with the System via the SO REST APIs=&lt;br /&gt;
The following document describes how to interact with the systme using the SO REST APis.&lt;br /&gt;
&lt;br /&gt;
[[Media:Osm-r1-so-rest-api-guide.pdf]]&lt;br /&gt;
&lt;br /&gt;
=Additional information=&lt;br /&gt;
&lt;br /&gt;
*Check other VNF packages and NS packages in the links below:&lt;br /&gt;
**VNF packages: https://osm-download.etsi.org/ftp/osm-1.0-one/vnf-packages&lt;br /&gt;
**NS packages: https://osm-download.etsi.org/ftp/osm-1.0-one/ns-packages&lt;br /&gt;
*[[Deploying advanced Network Services (Release ONE)|Deploy advanced Network Services]]&lt;br /&gt;
*[[Creating your own VNF package (Release ONE)|Create your own VNF package]]&lt;br /&gt;
*[[Reference VNF and NS Descriptors (Release ONE)|Reference VNF and NS Descriptors]]&lt;br /&gt;
*[[Creating your own VNF charm (Release_ONE)|Creating your own VNF charm]]&lt;br /&gt;
*[[How to report issues (Release ONE)|Have you detected any bug? Check this guide to see how to report issues]]&lt;br /&gt;
*[[Logs and troubleshooting (Release ONE)|Logs and troubleshooting]]&lt;br /&gt;
*[[Life Cycle Management of VNFs from the RO (Release ONE)|Life Cycle Management of VNFs from the RO]]&lt;br /&gt;
*[[Release ONE Data Model details|Data Model Details]]&lt;br /&gt;
*[https://osm.etsi.org/images/OSM-Whitepaper-TechContent-ReleaseONE-FINAL.pdf OSM White Paper - Release ONE Technical Overview]&lt;br /&gt;
*[[Release ONE Technical FAQ|Technical FAQ]]&lt;br /&gt;
&lt;br /&gt;
{{Feedback}}&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Talk:Logs_and_troubleshooting_(Release_ONE)&amp;diff=1219</id>
		<title>Talk:Logs and troubleshooting (Release ONE)</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Talk:Logs_and_troubleshooting_(Release_ONE)&amp;diff=1219"/>
		<updated>2017-02-28T16:47:35Z</updated>

		<summary type="html">&lt;p&gt;Berpec: /* Update with install script ? */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Update with install script ? ==&lt;br /&gt;
&lt;br /&gt;
About the section [[Logs_and_troubleshooting_(Release_ONE)#Software_upgrade]]&lt;br /&gt;
&lt;br /&gt;
The script linked in [[OSM_Release_ONE#Install_from_source]] is supposed to handle updates, is it stable enough to be included in the wiki ?&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1195</id>
		<title>Talk:RO Northbound Interface</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1195"/>
		<updated>2017-01-31T09:28:31Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is RO supporting json or yaml or both ? ==&lt;br /&gt;
&lt;br /&gt;
Several entries on this page are not correct according to what we find in the code.&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the wiki&#039;&#039;&#039;&lt;br /&gt;
    POST /openmano/{tenant_id}/instances/{instance_id}/action&lt;br /&gt;
    take an action over a scenario instance. Actions can be {start,pause,resume,shutoff,shutdown,forceOff,rebuild,reboot,console}&lt;br /&gt;
    Params: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the code we cand read&#039;&#039;&#039; [https://osm.etsi.org/gitweb/?p=osm/RO.git;a=blob;f=httpserver.py;h=789e0224c7c6354a49a04d1c56d59e524ee193d1;hb=aceb46455ba16b5cfddd8cde528251a57e8a3b56#l1224 httpserver.py]&lt;br /&gt;
    @bottle.route(url_base + &#039;/&amp;lt;tenant_id&amp;gt;/instances/&amp;lt;instance_id&amp;gt;/action&#039;, method=&#039;POST&#039;)&lt;br /&gt;
    def http_post_instance_scenario_action(tenant_id, instance_id):&lt;br /&gt;
    [...]&lt;br /&gt;
        #parse input data&lt;br /&gt;
        http_content,_ = format_in( &#039;&#039;instance_scenario_action_schema&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;And then&#039;&#039;&#039; [https://osm.etsi.org/gitweb/?p=osm/RO.git;a=blob;f=openmano_schemas.py;h=ffbacd3adb68428bf143d227f9e6f295b8bbbea2;hb=aceb46455ba16b5cfddd8cde528251a57e8a3b56#l1036 openmano_schemas.py]&lt;br /&gt;
    &#039;&#039;instance_scenario_action_schema&#039;&#039; = {&lt;br /&gt;
    &amp;quot;title&amp;quot;:&amp;quot;instance scenario action information schema&amp;quot;,&lt;br /&gt;
    &amp;quot;$schema&amp;quot;: &amp;quot;http://json-schema.org/draft-04/schema#&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The documentation states that yaml is expected but the code seem to expect a json.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Same problem for &#039;&#039;openmano/{tenant_id}/instances&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== REPLY: ===&lt;br /&gt;
&lt;br /&gt;
Code admits both yaml and json based on HTTP header &amp;quot;Content-type:&amp;quot; application/yaml or application/json&lt;br /&gt;
&lt;br /&gt;
&amp;quot;json-schema&amp;quot; is a python library to validate input and, in spite of its name, has no connection at all with json or yaml.&lt;br /&gt;
&lt;br /&gt;
As a side note, for further comments in &amp;quot;talk&amp;quot; sections, please use the &amp;quot;Add topic&amp;quot; option (between &amp;quot;Edit&amp;quot; and &amp;quot;View history&amp;quot;), so that more than one topic can be included.&lt;br /&gt;
&lt;br /&gt;
== Version of the RO ? ==&lt;br /&gt;
&lt;br /&gt;
There is several versions of the RO :https://osm.etsi.org/gitweb/?p=osm/RO.git;a=tags&lt;br /&gt;
&lt;br /&gt;
Should a table explicit the compatibility of this page with each tag ?&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1194</id>
		<title>Talk:RO Northbound Interface</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1194"/>
		<updated>2017-01-31T09:14:27Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several entries on this page are not correct according to what we find in the code.&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the wiki&#039;&#039;&#039;&lt;br /&gt;
    POST /openmano/{tenant_id}/instances/{instance_id}/action&lt;br /&gt;
    take an action over a scenario instance. Actions can be {start,pause,resume,shutoff,shutdown,forceOff,rebuild,reboot,console}&lt;br /&gt;
    Params: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the code we cand read&#039;&#039;&#039; [https://osm.etsi.org/gitweb/?p=osm/RO.git;a=blob;f=httpserver.py;h=789e0224c7c6354a49a04d1c56d59e524ee193d1;hb=aceb46455ba16b5cfddd8cde528251a57e8a3b56#l1224 httpserver.py]&lt;br /&gt;
    @bottle.route(url_base + &#039;/&amp;lt;tenant_id&amp;gt;/instances/&amp;lt;instance_id&amp;gt;/action&#039;, method=&#039;POST&#039;)&lt;br /&gt;
    def http_post_instance_scenario_action(tenant_id, instance_id):&lt;br /&gt;
    [...]&lt;br /&gt;
        #parse input data&lt;br /&gt;
        http_content,_ = format_in( &#039;&#039;instance_scenario_action_schema&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;And then&#039;&#039;&#039; [https://osm.etsi.org/gitweb/?p=osm/RO.git;a=blob;f=openmano_schemas.py;h=ffbacd3adb68428bf143d227f9e6f295b8bbbea2;hb=aceb46455ba16b5cfddd8cde528251a57e8a3b56#l1036 openmano_schemas.py]&lt;br /&gt;
    &#039;&#039;instance_scenario_action_schema&#039;&#039; = {&lt;br /&gt;
    &amp;quot;title&amp;quot;:&amp;quot;instance scenario action information schema&amp;quot;,&lt;br /&gt;
    &amp;quot;$schema&amp;quot;: &amp;quot;http://json-schema.org/draft-04/schema#&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The documentation states that yaml is expected but the code seem to expect a json.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Same problem for &#039;&#039;openmano/{tenant_id}/instances&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== REPLY: ===&lt;br /&gt;
&lt;br /&gt;
Code admits both yaml and json based on HTTP header &amp;quot;Content-type:&amp;quot; application/yaml or application/json&lt;br /&gt;
&lt;br /&gt;
&amp;quot;json-schema&amp;quot; is a python library to validate input and, in spite of its name, has no connection at all with json or yaml.&lt;br /&gt;
&lt;br /&gt;
As a side note, for further comments in &amp;quot;talk&amp;quot; sections, please use the &amp;quot;Add topic&amp;quot; option (between &amp;quot;Edit&amp;quot; and &amp;quot;View history&amp;quot;), so that more than one topic can be included.&lt;br /&gt;
&lt;br /&gt;
== Version of the RO ? ==&lt;br /&gt;
&lt;br /&gt;
There is several versions of the RO :https://osm.etsi.org/gitweb/?p=osm/RO.git;a=tags&lt;br /&gt;
&lt;br /&gt;
Should a table explicit the compatibility of this page with each tag ?&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1193</id>
		<title>Talk:RO Northbound Interface</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1193"/>
		<updated>2017-01-31T09:11:51Z</updated>

		<summary type="html">&lt;p&gt;Berpec: /* Version of the RO ? */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several entries on this page are not correct according to what we find in the code.&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the wiki&#039;&#039;&#039;&lt;br /&gt;
    POST /openmano/{tenant_id}/instances/{instance_id}/action&lt;br /&gt;
    take an action over a scenario instance. Actions can be {start,pause,resume,shutoff,shutdown,forceOff,rebuild,reboot,console}&lt;br /&gt;
    Params: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the code we cand read&#039;&#039;&#039; [https://github.com/nfvlabs/openmano/blob/master/openmano/httpserver.py#L1066 httpserver.py]&lt;br /&gt;
    @bottle.route(url_base + &#039;/&amp;lt;tenant_id&amp;gt;/instances/&amp;lt;instance_id&amp;gt;/action&#039;, method=&#039;POST&#039;)&lt;br /&gt;
    def http_post_instance_scenario_action(tenant_id, instance_id):&lt;br /&gt;
    [...]&lt;br /&gt;
        #parse input data&lt;br /&gt;
        http_content,_ = format_in( &#039;&#039;instance_scenario_action_schema&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;And then&#039;&#039;&#039; [https://github.com/nfvlabs/openmano/blob/master/openmano/openmano_schemas.py#L732 openmano_schemas.py]&lt;br /&gt;
    &#039;&#039;instance_scenario_action_schema&#039;&#039; = {&lt;br /&gt;
    &amp;quot;title&amp;quot;:&amp;quot;instance scenario action information schema&amp;quot;,&lt;br /&gt;
    &amp;quot;$schema&amp;quot;: &amp;quot;http://json-schema.org/draft-04/schema#&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The documentation states that yaml is expected but the code seem to expect a json.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Same problem for &#039;&#039;openmano/{tenant_id}/instances&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== REPLY: ===&lt;br /&gt;
&lt;br /&gt;
Code admits both yaml and json based on HTTP header &amp;quot;Content-type:&amp;quot; application/yaml or application/json&lt;br /&gt;
&lt;br /&gt;
&amp;quot;json-schema&amp;quot; is a python library to validate input and, in spite of its name, has no connection at all with json or yaml.&lt;br /&gt;
&lt;br /&gt;
On the other hand, the references to github above are outdated. RO code is available at OSM&#039;s RO repo at: https://osm.etsi.org/gerrit/#/admin/projects/osm/RO&lt;br /&gt;
&lt;br /&gt;
As a side note, for further comments in &amp;quot;talk&amp;quot; sections, please use the &amp;quot;Add topic&amp;quot; option (between &amp;quot;Edit&amp;quot; and &amp;quot;View history&amp;quot;), so that more than one topic can be included.&lt;br /&gt;
&lt;br /&gt;
== Version of the RO ? ==&lt;br /&gt;
&lt;br /&gt;
There is several versions of the RO :https://osm.etsi.org/gitweb/?p=osm/RO.git;a=tags&lt;br /&gt;
&lt;br /&gt;
Should a table explicit the compatibility of this page with each tag ?&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=RO_Northbound_Interface&amp;diff=1190</id>
		<title>RO Northbound Interface</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=RO_Northbound_Interface&amp;diff=1190"/>
		<updated>2017-01-30T16:33:34Z</updated>

		<summary type="html">&lt;p&gt;Berpec: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document describes the northbound interface of RO (openmano) Release 1.&lt;br /&gt;
&lt;br /&gt;
The Northbound interface is based on REST and it allows performing actions over the&lt;br /&gt;
following entities:&lt;br /&gt;
&lt;br /&gt;
* Tenant: Intended to create groups of resources. In this version no security mechanisms are implemented.&lt;br /&gt;
* Datacenters: Represents the VIM information stored by openmano.&lt;br /&gt;
* VIMs: used to perform an action over a datacenter (specific pool of resources)&lt;br /&gt;
* VNFs: SW-based network function, composed of one or several VM that can be deployed on an NFV datacenter.&lt;br /&gt;
* Scenarios: topologies of VNFs and their interconnections.&lt;br /&gt;
* Instances: Each one of the Scenarios deployed in a datacenter.&lt;br /&gt;
&lt;br /&gt;
===Details===&lt;br /&gt;
&lt;br /&gt;
===HTTP protocol details===&lt;br /&gt;
* The HTTP HEADER &amp;quot;X-Auth-Token&amp;quot; is ignored in this version, though it will be available in future. Current version does not support security and authentication&lt;br /&gt;
* Server supports JSON (by default), and YAML. Use HTTP HEADER &amp;quot;Content-Type: &lt;br /&gt;
    application/FORMAT&amp;quot; for specifying the input format and HTTP HEADER &amp;quot;Accept:&lt;br /&gt;
    application/FORMAT&amp;quot; for the wanted output format. In this version it does not support&lt;br /&gt;
    the URL suffix .yaml or .json as for example openstack neutron does.&lt;br /&gt;
* Server supports URL Query String filters. For example:&lt;br /&gt;
    HTTP GET /whatever?name1=value1&amp;amp;name2=value2&amp;quot;&lt;br /&gt;
    Will filter by &amp;quot;name1=value1 AND name2=value2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In a near future version it will support pagination using limit, market, page_reverse and field filtering in the same way as openstack neutron.&lt;br /&gt;
* Possible responses of HTTP Commands are:&lt;br /&gt;
    200 Ok&lt;br /&gt;
    400 Bad Request&lt;br /&gt;
    404 Not Found&lt;br /&gt;
    405 Method Not Allowed&lt;br /&gt;
    409 Conflict&lt;br /&gt;
    503 Service Unavailable&lt;br /&gt;
    500 Internal Server Error&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Openmano Server primitives==&lt;br /&gt;
&lt;br /&gt;
===Tenants===&lt;br /&gt;
====GET /openmano/tenants====&lt;br /&gt;
Gets a list of all tenants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tenants&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;created_at&amp;quot;: &amp;quot;2015-08-06T10:38:07&amp;quot;,&lt;br /&gt;
          &amp;quot;description&amp;quot;: &amp;quot;tenant_de_prueba&amp;quot;,&lt;br /&gt;
          &amp;quot;uuid&amp;quot;: &amp;quot;76094a2a-3c16-11e5-9fb6-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;tenanttest&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-04T13:06:54&amp;quot;,&lt;br /&gt;
          &amp;quot;description&amp;quot;: &amp;quot;A description...&amp;quot;,&lt;br /&gt;
          &amp;quot;uuid&amp;quot;: &amp;quot;8293285c-9a7f-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/tenants/{tenant_id}====&lt;br /&gt;
Get the full description of the tenant identified by tenant_id (tenant´s name or uuid)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: None&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tenant&amp;quot;: {&lt;br /&gt;
        &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-04T13:06:54&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;A description...&amp;quot;,&lt;br /&gt;
        &amp;quot;modified_at&amp;quot;: null,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: &amp;quot;8293285c-9a7f-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
====POST/openmano/tenants====&lt;br /&gt;
Create new tenant&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: (Extra parameters are ignored) Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
* name: tenant name provided by the client&lt;br /&gt;
* description: (optional) tenant description provided by the client&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
    &amp;quot;tenant&amp;quot;:&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;John Doe&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;A description...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tenant&amp;quot;: {&lt;br /&gt;
        &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-04T13:06:54&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;A description...&amp;quot;,&lt;br /&gt;
        &amp;quot;modified_at&amp;quot;: null,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: &amp;quot;8293285c-9a7f-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====PUT /openmano/tenants/{tenant_id}====&lt;br /&gt;
Update tenant identified by tenant_id (tenant´s name or uuid)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: (Extra parameters are ignored)  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
* name: tenant name provided by the client&lt;br /&gt;
* description: (optional) tenant description provided by the client&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;tenant&amp;quot;:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;John Doe&amp;quot;,&lt;br /&gt;
                &amp;quot;description&amp;quot;: &amp;quot; Unknown person...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;tenant&amp;quot;: {&lt;br /&gt;
            &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-04T13:06:54&amp;quot;, &lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot; Unknown person...&amp;quot;, &lt;br /&gt;
            &amp;quot;modified_at&amp;quot;: null, &lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;8293285c-9a7f-11e5-bc4f-5254004aea96&amp;quot;, &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/tenants/{tenant_id}====&lt;br /&gt;
Delete a tenant identified by tenant_id (tenant´s name or uuid) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: &amp;quot;tenant 9767ac6e-9a82-11e5-bc4f-5254004aea96 deleted&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Datacenters===&lt;br /&gt;
&lt;br /&gt;
These commands does not affect a concrete VIM, but the openmano information of a VIM&lt;br /&gt;
 &lt;br /&gt;
====GET /openmano/{tenant_id}/datacenters====&lt;br /&gt;
Get a list of datacenters attached to the tenant identified by tenant_id (tenant´s name or uuid). The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to get a list of all datacenters of all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;datacenters&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;vim_url&amp;quot;: &amp;quot;http://localhost:9080/openvim&amp;quot;,&lt;br /&gt;
          &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-09T10:10:00&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;openvim&amp;quot;,&lt;br /&gt;
          &amp;quot;uuid&amp;quot;: &amp;quot;a01a4b34-9e54-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;John_Doe_data_center&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant\_id}/datacenters/{datacenter_id}====&lt;br /&gt;
Get a the parameters of a datacenter attached to a tenant identified by tenant_id. The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to look for the datacenter_id in all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;:none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;datacenter&amp;quot;: {&lt;br /&gt;
        &amp;quot;vim_url&amp;quot;: &amp;quot;http://localhost:9080/openvim&amp;quot;,&lt;br /&gt;
        &amp;quot;vim_url_admin&amp;quot;: null,&lt;br /&gt;
        &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-09T10:10:00&amp;quot;,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: &amp;quot;a01a4b34-9e54-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;John_Doe_data_center&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;openvim&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: null,&lt;br /&gt;
        &amp;quot;config&amp;quot;: null,&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/datacenters====&lt;br /&gt;
Create a new datacenter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
* name: name of the datacenter to create&lt;br /&gt;
* vim_url: url of the machine where is hold VIM (Openvim) (TBC)&lt;br /&gt;
* type: can be openvim, openstack, ...&lt;br /&gt;
* config: extra configuration needed by the specific VIM connectors&lt;br /&gt;
* description: descriptive text&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;datacenter&amp;quot;:{&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;John_Doe_data_center&amp;quot;,&lt;br /&gt;
            &amp;quot;vim_url&amp;quot;: &amp;quot;http://localhost:9080/openvim&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;datacenter&amp;quot;: {&lt;br /&gt;
        &amp;quot;vim_url&amp;quot;: &amp;quot;http://localhost:9080/openvim&amp;quot;,&lt;br /&gt;
        &amp;quot;vim_url_admin&amp;quot;: null,&lt;br /&gt;
        &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-09T10:10:00&amp;quot;,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: &amp;quot;a01a4b34-9e54-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;John_Doe_data_center&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;openvim&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: null,&lt;br /&gt;
        &amp;quot;config&amp;quot;: null,&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====PUT /openmano/datacenters/{datacenter\_id_name}====&lt;br /&gt;
Modify a datacenter. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
Params that can be changed are:&lt;br /&gt;
&lt;br /&gt;
* name: datacenter name&lt;br /&gt;
* vim_url: vim url&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;datacenter&amp;quot;:{&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;new_datacenter_name&amp;quot;,&lt;br /&gt;
            &amp;quot;vim_url&amp;quot;: &amp;quot;http://localhost:9080/openvim&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
If no error, same as &amp;quot;Post /openmano/datacenters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/datacenters/{datacenter_id}/networks====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;: see [[RO_Northbound_Interface#VIMs]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/{tenant\_id}/datacenters/{datacenter_id}/action====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;: see [[RO_Northbound_Interface#VIMs]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/datacenters/{datacenter_id}====&lt;br /&gt;
&lt;br /&gt;
Delete a datacenter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;:none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;datacenter e3042842-9e78-11e5-bc4f-5254004aea96 deleted&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/&amp;lt;tenant\_id&amp;gt;/datacenters/{datacenter_id}====&lt;br /&gt;
&lt;br /&gt;
Attach the datacenter identifiedby datacenter_id and openvim tenant to the openmano tenant&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If no error, same as GET /openmano/{tenant\_id}/datacenters/{datacenter_id}&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/&amp;lt;tenant\_id&amp;gt;/datacenters/{datacenter_id}====&lt;br /&gt;
Detach a datacenter and this tenant&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If no error, same as GET /openmano/{tenant\_id}/datacenters/{datacenter_id}&lt;br /&gt;
&lt;br /&gt;
===VIMs===&lt;br /&gt;
&lt;br /&gt;
These commands make actions over a VIM (datacenter)&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/vim/{datacenter_id}/networks====&lt;br /&gt;
Get a list of VIM networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;networks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;provider:physical&amp;quot;: &amp;quot;macvtap:em1&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;macvtap:em1&amp;quot;,&lt;br /&gt;
            &amp;quot;admin_state_up&amp;quot;: true,&lt;br /&gt;
            &amp;quot;shared&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;bridge_man&amp;quot;,&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;7a6c5bae-65d5-11e6-b9c7-0800273e724c&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;complex-instance.dataconn1&amp;quot;,&lt;br /&gt;
            &amp;quot;admin_state_up&amp;quot;: true,&lt;br /&gt;
            &amp;quot;tenant_id&amp;quot;: &amp;quot;8850b260-65d5-11e6-b9c7-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;provider:vlan&amp;quot;: 3000,&lt;br /&gt;
            &amp;quot;shared&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;ptp&amp;quot;,&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;8c0e199c-65d5-11e6-b9c7-0800273e724c&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;complex2-instance.datanet&amp;quot;,&lt;br /&gt;
            &amp;quot;admin_state_up&amp;quot;: true,&lt;br /&gt;
            &amp;quot;tenant_id&amp;quot;: &amp;quot;8850b260-65d5-11e6-b9c7-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;provider:vlan&amp;quot;: 3008,&lt;br /&gt;
            &amp;quot;shared&amp;quot;: false,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;data&amp;quot;,&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;8d764b7e-65d5-11e6-b9c7-0800273e724c&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/vim/{datacenter_id}/{vim_network_id}====&lt;br /&gt;
Get details over a VIM network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;network&amp;quot;: {&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
        &amp;quot;provider:physical&amp;quot;: &amp;quot;openflow:port1/8:vlan&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;data_net&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_state_up&amp;quot;: true,&lt;br /&gt;
        &amp;quot;provider:vlan&amp;quot;: 3001,&lt;br /&gt;
        &amp;quot;shared&amp;quot;: true,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;data&amp;quot;,&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;7ab198cc-65d5-11e6-b9c7-0800273e724c&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
====POST /openmano/{tenant_id}/vim/{datacenter_id}/networks====&lt;br /&gt;
&lt;br /&gt;
Add a network at VIM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
* name: name of the network&lt;br /&gt;
* type: type of network (data, ptp, bridge), To be changed to ETSI notation E-LAN, E-LINE&lt;br /&gt;
* shared: available for all tenants or private&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;network&amp;quot;:{&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;mynet&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;:  Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;network&amp;quot;: {&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;mynet&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_state_up&amp;quot;: true,&lt;br /&gt;
        &amp;quot;tenant_id&amp;quot;: &amp;quot;8850b260-65d5-11e6-b9c7-0800273e724c&amp;quot;,&lt;br /&gt;
        &amp;quot;provider:vlan&amp;quot;: 3009,&lt;br /&gt;
        &amp;quot;shared&amp;quot;: false,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;data&amp;quot;,&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;a8ac819e-65d8-11e6-b9c7-0800273e724c&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/{tenant_id}/vim/{datacenter_id}/networks/{vim_network_id}====&lt;br /&gt;
Delete a VIM network&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;network e97b7158-65d8-11e6-b9c7-0800273e724c mynet deleted&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
===VNFs===&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/vnfs====&lt;br /&gt;
Get a list of vnfs. The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to obtain also from all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039; Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vnfs&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;description&amp;quot;: &amp;quot;VNF1 description&amp;quot;,&lt;br /&gt;
                &amp;quot;created_at&amp;quot;: &amp;quot;2015-08-24T13:41:20&amp;quot;,&lt;br /&gt;
                &amp;quot;uuid&amp;quot;: &amp;quot;09c7209c-4a55-11e5-9f62-5254004aea96&amp;quot;,&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;VNF1&amp;quot;,&lt;br /&gt;
                &amp;quot;path&amp;quot;: &amp;quot;/path/to/VNF1.vnfd&amp;quot;,&lt;br /&gt;
                &amp;quot;public&amp;quot;: true,&lt;br /&gt;
                &amp;quot;physical&amp;quot;: false&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;description&amp;quot;: &amp;quot;VNF1 description&amp;quot;&amp;quot;,&lt;br /&gt;
                &amp;quot;created_at&amp;quot;: &amp;quot;2015-09-15T13:22:24&amp;quot;,&lt;br /&gt;
                &amp;quot;uuid&amp;quot;: &amp;quot;09d14bf0-5b9c-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;VNF2&amp;quot;,&lt;br /&gt;
                &amp;quot;path&amp;quot;: &amp;quot;/path/to/VNF2.vnfd&amp;quot;,&lt;br /&gt;
                &amp;quot;public&amp;quot;: true,&lt;br /&gt;
                &amp;quot;physical&amp;quot;: false&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/vnfs/{vnf_id}====&lt;br /&gt;
Get vnf details. The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to obtain also from all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
* VNFC: Array of virtual machines which compose the vnf&lt;br /&gt;
* External-connections: array of vnf&#039;s connections&lt;br /&gt;
    * vm_name: name of the internal virtual machine which this connections is connected&lt;br /&gt;
    * external_name: name of the conection to show in the interface&lt;br /&gt;
    * type: type of connection&lt;br /&gt;
    * vpci: Virtual PCI address &lt;br /&gt;
    * bw: bandwidth&lt;br /&gt;
    * internal_name: local iface name of the VM &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vnf&amp;quot;: {&lt;br /&gt;
            &amp;quot;VNFC&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;description&amp;quot;: &amp;quot;VM 1 in the MultiVM template&amp;quot;,&lt;br /&gt;
                    &amp;quot;uuid&amp;quot;: &amp;quot;09c73a00-4a55-11e5-9f62-5254004aea96&amp;quot;,&lt;br /&gt;
                    &amp;quot;name&amp;quot;: &amp;quot;VM1&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;VNF1 description&amp;quot;,&lt;br /&gt;
            &amp;quot;created_at&amp;quot;: &amp;quot;2015-08-24T13:41:20&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;09c7209c-4a55-11e5-9f62-5254004aea96&amp;quot;,&lt;br /&gt;
            &amp;quot;external-connections&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;vm_name&amp;quot;: &amp;quot;VM1&amp;quot;,&lt;br /&gt;
                    &amp;quot;external_name&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
                    &amp;quot;uuid&amp;quot;: &amp;quot;09c75562-4a55-11e5-9f62-5254004aea96&amp;quot;,&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
                    &amp;quot;vpci&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;bw&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;internal_name&amp;quot;: &amp;quot;eth0&amp;quot;,&lt;br /&gt;
                    &amp;quot;vm_id&amp;quot;: &amp;quot;09c73a00-4a55-11e5-9f62-5254004aea96&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;path&amp;quot;: &amp;quot;/home/psa/openmano/openmano/vnfrepo/VNF1.vnfd&amp;quot;,&lt;br /&gt;
            &amp;quot;physical&amp;quot;: false,&lt;br /&gt;
            &amp;quot;nets&amp;quot;: [],&lt;br /&gt;
            &amp;quot;public&amp;quot;: true,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;VNF1&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/{tenant\_id}/vnfs====&lt;br /&gt;
Insert a vnf into the catalogue. Try to create the needed flavors and images at all attached VIM, and creates the VNF and its internal structure in the OPENMANO DB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
See at code /vnfs/vnf-template-2vm.yaml and /vnfs/vnf-template.yaml&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vnf&#039;&#039;&#039;:&lt;br /&gt;
    * &#039;&#039;&#039;name&#039;&#039;&#039; (required): vnf name&lt;br /&gt;
    * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): vnf description&lt;br /&gt;
    * &#039;&#039;&#039;class&#039;&#039;&#039; (optional): Used to organize VNFs &lt;br /&gt;
    * &#039;&#039;&#039;public&#039;&#039;&#039; (optional): boolean &lt;br /&gt;
    * &#039;&#039;&#039;physical&#039;&#039;&#039; (optional): boolean&lt;br /&gt;
    * &#039;&#039;&#039;external-connections&#039;&#039;&#039; (required): array of objects. Each one describe a connection that the vnf expose to the outside.&lt;br /&gt;
        * &#039;&#039;&#039;name&#039;&#039;&#039; (required): connection name&lt;br /&gt;
        * &#039;&#039;&#039;type&#039;&#039;&#039; (required): type of connection. Types availables are: &amp;quot;mgmt&amp;quot;,&amp;quot;bridge&amp;quot;,&amp;quot;data&amp;quot;&lt;br /&gt;
        * &#039;&#039;&#039;VNFC&#039;&#039;&#039; (required): Name of the internal VM to which this connection is connected. Must match with one of the VM name of the VNF section&lt;br /&gt;
        * &#039;&#039;&#039;local\_iface_name&#039;&#039;&#039; (required): interface name of the VM. Must match with one of the interfaces described in the VM description.&lt;br /&gt;
        * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): Connection description.&lt;br /&gt;
    * &#039;&#039;&#039;internal-connections&#039;&#039;&#039; (optional): Array of objects which describes inner connections between VMs that the vnf contains&lt;br /&gt;
        * &#039;&#039;&#039;name&#039;&#039;&#039; (required): inner connection name&lt;br /&gt;
        * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): inner connection description&lt;br /&gt;
        * &#039;&#039;&#039;type&#039;&#039;&#039; (required): type of connection. Types availables are: &amp;quot;bridge&amp;quot;,&amp;quot;data&amp;quot;,&amp;quot;ptp&amp;quot;&lt;br /&gt;
        * &#039;&#039;&#039;elements&#039;&#039;&#039; (required): Array of objects. Describes end points of the inner connection&lt;br /&gt;
            * &#039;&#039;&#039;VNFC&#039;&#039;&#039;: Name of the internal VM to which this connection is connected. Must match with one of the VM name of the VNF section&lt;br /&gt;
            * &#039;&#039;&#039;local\_iface_name&#039;&#039;&#039;: interface name of the VM. Must match with one of the interfaces described in the VM description.&lt;br /&gt;
    * &#039;&#039;&#039;VNFC&#039;&#039;&#039;: Array of objects that describes each of the inner VMs. Must contain at least one.&lt;br /&gt;
        * &#039;&#039;&#039;name&#039;&#039;&#039; (required): Name of the VM&lt;br /&gt;
        * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): Description of the VM&lt;br /&gt;
        * &#039;&#039;&#039;VNFC image&#039;&#039;&#039; (required): Path of the image location&lt;br /&gt;
        * &#039;&#039;&#039;image metadata&#039;&#039;&#039; (optional)&lt;br /&gt;
            * &#039;&#039;&#039;architecture&#039;&#039;&#039;&lt;br /&gt;
            * &#039;&#039;&#039;use_incremental&#039;&#039;&#039;: &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;&lt;br /&gt;
            * &#039;&#039;&#039;vpci&#039;&#039;&#039;:&lt;br /&gt;
            * &#039;&#039;&#039;os_distro&#039;&#039;&#039;:&lt;br /&gt;
            * &#039;&#039;&#039;os_type&#039;&#039;&#039;:&lt;br /&gt;
            * &#039;&#039;&#039;os_version&#039;&#039;&#039;:&lt;br /&gt;
            * &#039;&#039;&#039;bus&#039;&#039;&#039;:&lt;br /&gt;
        * &#039;&#039;&#039;processor&#039;&#039;&#039; (optional)&lt;br /&gt;
            * &#039;&#039;&#039;model&#039;&#039;&#039; (required)&lt;br /&gt;
            * &#039;&#039;&#039;features&#039;&#039;&#039;&lt;br /&gt;
        * &#039;&#039;&#039;hypervisor&#039;&#039;&#039;&lt;br /&gt;
            * &#039;&#039;&#039;type&#039;&#039;&#039;&lt;br /&gt;
            * &#039;&#039;&#039;version&#039;&#039;&#039;&lt;br /&gt;
        * &#039;&#039;&#039;ram&#039;&#039;&#039;: RAM memory of the VM. Only for traditional cloud VMs. Memory in MBytes (not from hugepages, oversubscription is allowed)&lt;br /&gt;
        * &#039;&#039;&#039;vcpus&#039;&#039;&#039;: Only for traditional cloud VMs. Number of virtual CPUs (oversubscription is allowed).&lt;br /&gt;
        * &#039;&#039;&#039;disk&#039;&#039;&#039;: disk size in GiB, by default 1&lt;br /&gt;
        * &#039;&#039;&#039;numas&#039;&#039;&#039;: Array of numa nodes description&lt;br /&gt;
            * &#039;&#039;&#039;memory&#039;&#039;&#039;: memory in GBytes&lt;br /&gt;
            * &#039;&#039;&#039;cores&#039;&#039;&#039; | &#039;&#039;&#039;paired-threads&#039;&#039;&#039; | &#039;&#039;&#039;threads&#039;&#039;&#039; (only use one)&lt;br /&gt;
                * &#039;&#039;&#039;cores-id&#039;&#039;&#039; (optional): array of integer to specify each core&lt;br /&gt;
                * &#039;&#039;&#039;paired-threads-id&#039;&#039;&#039; (optional): Array of paired threads. (i.e:[ [0,1], [2,3], [4,5], [6,7], [8,9] ]) By default follows incremental order&lt;br /&gt;
                * &#039;&#039;&#039;threads-id&#039;&#039;&#039; (optional): array of integer to specify each thread&lt;br /&gt;
            * &#039;&#039;&#039;interfaces&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;name&#039;&#039;&#039; (required): interface name&lt;br /&gt;
                * &#039;&#039;&#039;dedicated&#039;&#039;&#039; (required): available options are &amp;quot;yes&amp;quot;(passthrough), &amp;quot;no&amp;quot;(sriov with vlan tags), &amp;quot;yes:sriov&amp;quot;(sriovi, but exclusive and without vlan tag)&lt;br /&gt;
                * &#039;&#039;&#039;bandwidth&#039;&#039;&#039; (required): bandwidth in Mbps or Gbps.&lt;br /&gt;
                * &#039;&#039;&#039;vpci&#039;&#039;&#039; (optional): Virtual PCI address  &lt;br /&gt;
                * &#039;&#039;&#039;mac_address&#039;&#039;&#039; (optional): avoid this option if possible&lt;br /&gt;
        * &#039;&#039;&#039;bridge-ifaces&#039;&#039;&#039;&lt;br /&gt;
            * &#039;&#039;&#039;name&#039;&#039;&#039; (required): bridge interface name&lt;br /&gt;
            * &#039;&#039;&#039;bandwidth&#039;&#039;&#039; (Optional): Informative only&lt;br /&gt;
            * &#039;&#039;&#039;vpci&#039;&#039;&#039; (optional): Virtual PCI address   &lt;br /&gt;
            * &#039;&#039;&#039;mac_address&#039;&#039;&#039; (optional): avoid this option if possible&lt;br /&gt;
            * &#039;&#039;&#039;model&#039;&#039;&#039; (optional): (&amp;quot;virtio&amp;quot;,&amp;quot;e1000&amp;quot;,&amp;quot;ne2k_pci&amp;quot;,&amp;quot;pcnet&amp;quot;,&amp;quot;rtl8139&amp;quot;) By default, it is automatically filled by libvirt&lt;br /&gt;
        * &#039;&#039;&#039;devices&#039;&#039;&#039;: extra devices asigned to the VM. The order determines device letter asignation (hda, hdb, ...)&lt;br /&gt;
            * &#039;&#039;&#039;type&#039;&#039;&#039;: (&amp;quot;disk&amp;quot;,&amp;quot;cdrom&amp;quot;,&amp;quot;xml&amp;quot;)&lt;br /&gt;
            * &#039;&#039;&#039;image&#039;&#039;&#039;: path to image&lt;br /&gt;
            * &#039;&#039;&#039;image&#039;&#039;&#039; metadata: device image metadata.&lt;br /&gt;
                * &#039;&#039;&#039;architecture&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;use_incremental&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;vpci&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;os_distro&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;os_type&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;os_version&#039;&#039;&#039;&lt;br /&gt;
                * &#039;&#039;&#039;bus&#039;&#039;&#039;&lt;br /&gt;
            * &#039;&#039;&#039;vpci&#039;&#039;&#039; (optional): depending on the device type (not needed for disk or cdrom) &lt;br /&gt;
            * &#039;&#039;&#039;xml&#039;&#039;&#039;:  xml text for XML described devices&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/{tenant_id}/vnfs/{vnf_id}====&lt;br /&gt;
Deletes a vnf from database, and images and flavors in VIM when appropriate.  The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; when vnf belong to other tenant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;VNF 1ec2cdac-6779-11e5-bc4f-5254004aea96 deleted&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/{tenant_id}/topology/verify====&lt;br /&gt;
&lt;br /&gt;
Deprecated&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Scenarios===&lt;br /&gt;
====POST /openmano/{tenant_id}/scenarios ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(TBC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add a scenario into the catalogue. Creates the scenario and its internal structure in the OPENMANO DB&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
see at code /scenarios/scenario-template.yaml&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/{tenant_id}/scenarios/{scenario_id}/action====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;: use &#039;&#039;POST /openmano/{tenant_id}/instances&#039;&#039; instead&lt;br /&gt;
Take an action over a scenario&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
* Deploy a scenario: deploy all VNFs of the scenario. Creates a new instance scenario&lt;br /&gt;
    * &#039;&#039;&#039;instance_name&#039;&#039;&#039; (required): name of the scenario to deploy&lt;br /&gt;
    * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): a description&lt;br /&gt;
    * &#039;&#039;&#039;datacenter&#039;&#039;&#039; (optional): name of the datacenter where the scenario will be deployed.&lt;br /&gt;
&lt;br /&gt;
    Content-type: application/json:&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;deploy&amp;quot;: {&lt;br /&gt;
                &amp;quot;instance_name&amp;quot;: &amp;quot;scenario1&amp;quot;,&lt;br /&gt;
                &amp;quot;description&amp;quot; : &amp;quot;a description...&amp;quot;,&lt;br /&gt;
                &amp;quot;datacenter&amp;quot; : &amp;quot;mydc&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
* Start a scenario: Equivalent to deploy&lt;br /&gt;
&lt;br /&gt;
    * &#039;&#039;&#039;instance_name&#039;&#039;&#039; (required): name of the scenario to start&lt;br /&gt;
    * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): a description&lt;br /&gt;
    * &#039;&#039;&#039;datacenter&#039;&#039;&#039; (optional): name of the datacenter where the scenario will be started.&lt;br /&gt;
&lt;br /&gt;
    Content-type: application/json:&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;start&amp;quot;: {&lt;br /&gt;
                &amp;quot;instance_name&amp;quot;: &amp;quot;scenario1&amp;quot;,&lt;br /&gt;
                &amp;quot;description&amp;quot; : &amp;quot;a description...&amp;quot;,&lt;br /&gt;
                &amp;quot;datacenter&amp;quot; : &amp;quot;mydc&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
* Reserve a scenario: Launch a new instance of the scenario without starting virtual machines.&lt;br /&gt;
&lt;br /&gt;
    * &#039;&#039;&#039;instance_name&#039;&#039;&#039; (required): name of the scenario to launch&lt;br /&gt;
    * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): a description&lt;br /&gt;
    * &#039;&#039;&#039;datacenter&#039;&#039;&#039; (optional): name of the datacenter where the scenario will be launched.&lt;br /&gt;
&lt;br /&gt;
    Content-type: application/json:&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;reserve&amp;quot;: {&lt;br /&gt;
                &amp;quot;instance_name&amp;quot;: &amp;quot;scenario1&amp;quot;,&lt;br /&gt;
                &amp;quot;description&amp;quot; : &amp;quot;a description...&amp;quot;,&lt;br /&gt;
                &amp;quot;datacenter&amp;quot; : &amp;quot;mydc&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
* Verify a scenario: deploy and destroy a scenario to check that there is room for it.&lt;br /&gt;
 &lt;br /&gt;
    * &#039;&#039;&#039;instance_name&#039;&#039;&#039; (required): name of the scenario to verify&lt;br /&gt;
    * &#039;&#039;&#039;description&#039;&#039;&#039; (optional): a description&lt;br /&gt;
    * &#039;&#039;&#039;datacenter&#039;&#039;&#039; (optional): name of the datacenter where the scenario will be verified.&lt;br /&gt;
&lt;br /&gt;
    Content-type: application/json:&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;verify&amp;quot;: {&lt;br /&gt;
                &amp;quot;instance_name&amp;quot;: &amp;quot;scenario1&amp;quot;,&lt;br /&gt;
                &amp;quot;description&amp;quot; : &amp;quot;a description...&amp;quot;,&lt;br /&gt;
                &amp;quot;datacenter&amp;quot; : &amp;quot;mydc&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/scenarios====&lt;br /&gt;
Get a list of existing scenarios for a tenant identified by tenant_id. The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to obtain also from all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039; Content-type: application/json&lt;br /&gt;
    &lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;scenarios&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;created_at&amp;quot;: &amp;quot;2015-09-15T13:02:07&amp;quot;,&lt;br /&gt;
          &amp;quot;description&amp;quot;: &amp;quot;Scenario1 test&amp;quot;,&lt;br /&gt;
          &amp;quot;public&amp;quot;: false,&lt;br /&gt;
          &amp;quot;uuid&amp;quot;: &amp;quot;34c4db72-5b99-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;Scenario1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;created_at&amp;quot;: &amp;quot;2015-09-15T09:49:47&amp;quot;,&lt;br /&gt;
          &amp;quot;description&amp;quot;: &amp;quot;Scenario2 test&amp;quot;,&lt;br /&gt;
          &amp;quot;public&amp;quot;: false,&lt;br /&gt;
          &amp;quot;uuid&amp;quot;: &amp;quot;5638c64e-5b7e-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;Scenario2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/scenarios/{scenario_id}====&lt;br /&gt;
Get details about a scenario. The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to obtain also from all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;scenario&amp;quot;: {&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Pconcepto-x&amp;quot;,&lt;br /&gt;
        &amp;quot;created_at&amp;quot;: &amp;quot;2015-09-15T13:02:07&amp;quot;,&lt;br /&gt;
        &amp;quot;modified_at&amp;quot;: null,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Pconcepto-x&amp;quot;,&lt;br /&gt;
        &amp;quot;vnfs&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;vnf_id&amp;quot;: &amp;quot;1f3d9aca-5b7e-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
            &amp;quot;description&amp;quot;: &amp;quot;VNF prueba concepto1&amp;quot;,&lt;br /&gt;
            &amp;quot;interfaces&amp;quot;: [&lt;br /&gt;
              {&lt;br /&gt;
                &amp;quot;sce_net_id&amp;quot;: &amp;quot;34c4f26a-5b99-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
                &amp;quot;uuid&amp;quot;: &amp;quot;34c5147a-5b99-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
                &amp;quot;interface_id&amp;quot;: &amp;quot;1f3dce50-5b7e-11e5-a873-5254004aea96&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;VNF-pconcepto1&amp;quot;,&lt;br /&gt;
            &amp;quot;nets&amp;quot;: [],&lt;br /&gt;
            &amp;quot;vms&amp;quot;: [&lt;br /&gt;
              {&lt;br /&gt;
                &amp;quot;description&amp;quot;: &amp;quot;prueba para demo&amp;quot;,&lt;br /&gt;
                &amp;quot;interfaces&amp;quot;: [&lt;br /&gt;
                  {&lt;br /&gt;
                    &amp;quot;external_name&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
                    &amp;quot;uuid&amp;quot;: &amp;quot;1f3dce50-5b7e-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
                    &amp;quot;vpci&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;bw&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;internal_name&amp;quot;: &amp;quot;eth0&amp;quot;,&lt;br /&gt;
                    &amp;quot;model&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
                    &amp;quot;net_id&amp;quot;: null&lt;br /&gt;
                  },&lt;br /&gt;
                  {&lt;br /&gt;
                    &amp;quot;external_name&amp;quot;: &amp;quot;eth1&amp;quot;,&lt;br /&gt;
                    &amp;quot;uuid&amp;quot;: &amp;quot;1f3de232-5b7e-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
                    &amp;quot;vpci&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;bw&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;internal_name&amp;quot;: &amp;quot;eth1&amp;quot;,&lt;br /&gt;
                    &amp;quot;model&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
                    &amp;quot;net_id&amp;quot;: null&lt;br /&gt;
                  }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;VMF-pconcepto1&amp;quot;,&lt;br /&gt;
                &amp;quot;image_id&amp;quot;: &amp;quot;bbecf86a-5b7a-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor_id&amp;quot;: &amp;quot;09c350f2-4a55-11e5-9f62-5254004aea96&amp;quot;,&lt;br /&gt;
                &amp;quot;uuid&amp;quot;: &amp;quot;1f3db2e4-5b7e-11e5-a873-5254004aea96&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;34c4fefe-5b99-11e5-a873-5254004aea96&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;nfvo_tenant_id&amp;quot;: &amp;quot;76094a2a-3c16-11e5-9fb6-5254004aea96&amp;quot;,&lt;br /&gt;
        &amp;quot;nets&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;description&amp;quot;: null,&lt;br /&gt;
            &amp;quot;vim_id&amp;quot;: null,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;default&amp;quot;,&lt;br /&gt;
            &amp;quot;external&amp;quot;: true,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;bridge&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;34c4f26a-5b99-11e5-a873-5254004aea96&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;public&amp;quot;: false,&lt;br /&gt;
        &amp;quot;uuid&amp;quot;: &amp;quot;34c4db72-5b99-11e5-a873-5254004aea96&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/{tenant_id}/scenarios/{scenario_id}====&lt;br /&gt;
Delete a scenario from database. The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; if this scenario does not belong to this tenant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039; Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;Scenario 5638c64e-5b7e-11e5-a873-5254004aea96 Scenario2 deleted&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====PUT /openmano/{tenant_id}/scenarios/{scenario_id}====&lt;br /&gt;
Edit an existing scenario. Only can be edited the scenario name, scenario description, graphical topology of the VNFs and VNF name and description.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(TBC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039; Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
===Instances===&lt;br /&gt;
====GET /openmano/{tenant_id}/instances====&lt;br /&gt;
Get instance list&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;instances&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;description&amp;quot;: null,&lt;br /&gt;
            &amp;quot;tenant_id&amp;quot;: &amp;quot;2db5634e-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;created_at&amp;quot;: &amp;quot;2016-08-19T13:58:16&amp;quot;,&lt;br /&gt;
            &amp;quot;scenario_id&amp;quot;: &amp;quot;34752430-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;simple-instance&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;369ac0d0-6604-11e6-950f-0800273e724c&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;description&amp;quot;: null,&lt;br /&gt;
            &amp;quot;tenant_id&amp;quot;: &amp;quot;2db5634e-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;created_at&amp;quot;: &amp;quot;2016-08-19T13:58:26&amp;quot;,&lt;br /&gt;
            &amp;quot;scenario_id&amp;quot;: &amp;quot;349ce93e-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;complex2-instance&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;3cf18d42-6604-11e6-950f-0800273e724c&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====GET /openmano/{tenant_id}/instances/{instance_id}====&lt;br /&gt;
Get instances details.  The parameter &#039;tenant_id&#039; can be replaced by &#039;any&#039; to obtain also from all tenants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;uuid&amp;quot;: &amp;quot;06e9f0ea-a23c-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Instance x description&amp;quot;,&lt;br /&gt;
      &amp;quot;tenant_id&amp;quot;: &amp;quot;2db5634e-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
      &amp;quot;datacenter_tenant_id&amp;quot;: &amp;quot;2e06029a-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
      &amp;quot;scenario_id&amp;quot;: &amp;quot;cd4cf84e-5b7a-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
      &amp;quot;datacenter_id&amp;quot;: &amp;quot;487c6844-40df-11e5-aaa7-5254004aea96&amp;quot;,&lt;br /&gt;
      &amp;quot;vnfs&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;vnf_name&amp;quot;: &amp;quot;VNF1&amp;quot;,&lt;br /&gt;
          &amp;quot;vnf_id&amp;quot;: &amp;quot;bbf04ac4-5b7a-11e5-a873-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;uuid&amp;quot;: &amp;quot;06ea139a-a23c-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
          &amp;quot;sce_vnf_id&amp;quot;: &amp;quot;34753eca-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
          &amp;quot;vms&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;status&amp;quot;: &amp;quot;VIM_ERROR&amp;quot;,&lt;br /&gt;
              &amp;quot;uuid&amp;quot;: &amp;quot;06ea4aae-a23c-11e5-bc4f-5254004aea96&amp;quot;,&lt;br /&gt;
              &amp;quot;vim_vm_id&amp;quot;: &amp;quot;06e7ca2c-a23c-11e5-92d5-5254004aea96&amp;quot;,&lt;br /&gt;
              &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-14T09:24:00&amp;quot;,&lt;br /&gt;
              &amp;quot;interfaces&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;external_name&amp;quot;: &amp;quot;eth0&amp;quot;,&lt;br /&gt;
                    &amp;quot;instance_net_id&amp;quot;: &amp;quot;369ad048-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
                    &amp;quot;vim_interface_id&amp;quot;: &amp;quot;b00549c8-e22f-4e07-bc00-ea8f65eaed9c&amp;quot;,&lt;br /&gt;
                    &amp;quot;internal_name&amp;quot;: &amp;quot;eth0&amp;quot;,&lt;br /&gt;
                    &amp;quot;mac_address&amp;quot;: &amp;quot;fa:16:3e:71:2f:af&amp;quot;,&lt;br /&gt;
                    &amp;quot;vim_info&amp;quot;: &amp;quot;&amp;lt;VIM information text formatted&amp;gt;&amp;quot;,&lt;br /&gt;
                    &amp;quot;ip_address&amp;quot;: &amp;quot;192.168.111.3&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;VMF1&amp;quot;,&lt;br /&gt;
              &amp;quot;error_msg&amp;quot;:  &amp;quot;ClientException: Not enough parameters to connect to openstack&amp;quot;,&lt;br /&gt;
              &amp;quot;vim_info&amp;quot;: &amp;quot;&amp;lt;VIM information text formatted&amp;gt;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;scenario_name&amp;quot;: &amp;quot;Scenario x&amp;quot;,&lt;br /&gt;
      &amp;quot;nets&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;VIM_ERROR&amp;quot;,&lt;br /&gt;
            &amp;quot;datacenter_id&amp;quot;: &amp;quot;2dd83432-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;sce_net_id&amp;quot;: &amp;quot;3475351a-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;369ad048-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;datacenter_tenant_id&amp;quot;: &amp;quot;2e06029a-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;vnf_net_id&amp;quot;: null,&lt;br /&gt;
            &amp;quot;external&amp;quot;: false,&lt;br /&gt;
            &amp;quot;vim_net_id&amp;quot;: &amp;quot;0e22e974-650f-4d09-a4ed-0473277acd85&amp;quot;,&lt;br /&gt;
            &amp;quot;vim_info&amp;quot;: &amp;quot;&amp;lt;VIM information text formatted&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;error_msg&amp;quot;: &amp;quot;ClientException: Not enough parameters to connect to openstack&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;created_at&amp;quot;: &amp;quot;2015-12-14T09:24:00&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Instance x&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====POST/openmano/{tenant_id}/instances====&lt;br /&gt;
Creates a new instance scenario&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
    ---&lt;br /&gt;
    instance:&lt;br /&gt;
        datacenter: 2dd83432-6604-11e6-950f-0800273e724c&lt;br /&gt;
        name: myinstance&lt;br /&gt;
        scenario: 34752430-6604-11e6-950f-0800273e724c&lt;br /&gt;
    schema_version: &#039;0.1&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
    &amp;quot;uuid&amp;quot;: &amp;quot;6791882a-6610-11e6-b370-0800273e724c&amp;quot;,&lt;br /&gt;
    &amp;quot;tenant_id&amp;quot;: &amp;quot;2db5634e-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
    &amp;quot;datacenter_tenant_id&amp;quot;: &amp;quot;2e06029a-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: null,&lt;br /&gt;
    &amp;quot;scenario_id&amp;quot;: &amp;quot;34752430-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
    &amp;quot;datacenter_id&amp;quot;: &amp;quot;2dd83432-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
    &amp;quot;vnfs&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;vnf_id&amp;quot;: &amp;quot;2fdd9a42-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;6792d28e-6610-11e6-b370-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;sce_vnf_id&amp;quot;: &amp;quot;34753eca-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;vms&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
                    &amp;quot;uuid&amp;quot;: &amp;quot;67937d92-6610-11e6-b370-0800273e724c&amp;quot;,&lt;br /&gt;
                    &amp;quot;vim_vm_id&amp;quot;: &amp;quot;b52342df-26e3-4456-871e-207138970757&amp;quot;,&lt;br /&gt;
                    &amp;quot;created_at&amp;quot;: 1471613132.416698,&lt;br /&gt;
                    &amp;quot;interfaces&amp;quot;: [&lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;quot;external_name&amp;quot;: &amp;quot;eth0&amp;quot;,&lt;br /&gt;
                            &amp;quot;instance_net_id&amp;quot;: &amp;quot;679233ce-6610-11e6-b370-0800273e724c&amp;quot;,&lt;br /&gt;
                            &amp;quot;vim_interface_id&amp;quot;: null,&lt;br /&gt;
                            &amp;quot;internal_name&amp;quot;: &amp;quot;eth0&amp;quot;,&lt;br /&gt;
                            &amp;quot;mac_address&amp;quot;: null,&lt;br /&gt;
                            &amp;quot;vim_info&amp;quot;: null,&lt;br /&gt;
                            &amp;quot;ip_address&amp;quot;: null&lt;br /&gt;
                        }&lt;br /&gt;
                    ],&lt;br /&gt;
                    &amp;quot;vim_info&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;error_msg&amp;quot;: null,&lt;br /&gt;
                    &amp;quot;name&amp;quot;: &amp;quot;linux-VM&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;datacenter_id&amp;quot;: &amp;quot;2dd83432-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;vnf_name&amp;quot;: &amp;quot;linux1&amp;quot;,&lt;br /&gt;
            &amp;quot;datacenter_tenant_id&amp;quot;: &amp;quot;2e06029a-6604-11e6-950f-0800273e724c&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;scenario_name&amp;quot;: &amp;quot;simple&amp;quot;,&lt;br /&gt;
    &amp;quot;nets&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
            &amp;quot;datacenter_id&amp;quot;: &amp;quot;2dd83432-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;sce_net_id&amp;quot;: &amp;quot;3475351a-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;uuid&amp;quot;: &amp;quot;679233ce-6610-11e6-b370-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;datacenter_tenant_id&amp;quot;: &amp;quot;2e06029a-6604-11e6-950f-0800273e724c&amp;quot;,&lt;br /&gt;
            &amp;quot;vnf_net_id&amp;quot;: null,&lt;br /&gt;
            &amp;quot;external&amp;quot;: false,&lt;br /&gt;
            &amp;quot;vim_net_id&amp;quot;: &amp;quot;bc4e1ac4-831b-4098-ae0a-568d40caefd3&amp;quot;,&lt;br /&gt;
            &amp;quot;vim_info&amp;quot;: null,&lt;br /&gt;
            &amp;quot;error_msg&amp;quot;: null&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;created_at&amp;quot;: 1471613132.416668,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;myinstance&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====DELETE /openmano/{tenant_id}/instances/{instance_id}====&lt;br /&gt;
Delete instance from VIM and from database.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;instance c8d1fca2-677c-11e5-bc4f-5254004aea96 deleted&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
====POST /openmano/{tenant\_id}/instances/{instance_id}/action====&lt;br /&gt;
take an action over a scenario instance. Actions can be {start,pause,resume,shutoff,shutdown,forceOff,rebuild,reboot,console}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Params&#039;&#039;&#039;: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
Must contain ONLY ONE action (from the bellow list), and optionally a VNF list and/or a VM list. If a VNF list is provided the action is applied only to all VMs of this VNF. If a VM list is provided the actions is applied also to these VMs. If neither VNF, nor VM list are provided the action is applied to all the VMs of the instance scenario. These lists conatin the identifier obtained in creating the scenario response(and also GET instance scenario details); concretely the at the &amp;quot;vnfs&amp;quot;:&amp;quot;uuid&amp;quot; field for the VNFs, and at&amp;quot;vnfs&amp;quot;:&amp;quot;vms&amp;quot;:&amp;quot;uuid&amp;quot; field for the VMs.&lt;br /&gt;
&lt;br /&gt;
    ---&lt;br /&gt;
    &amp;quot;start&amp;quot;: null  #To start an instance&lt;br /&gt;
    &amp;quot;pause&amp;quot;: null  #To pause an instance&lt;br /&gt;
    &amp;quot;resume&amp;quot;: null #To resume an instance&lt;br /&gt;
    &amp;quot;shutoff&amp;quot;: null #To shutoff an instance&lt;br /&gt;
    &amp;quot;shutdown&amp;quot;: null #To shutdown an instance&lt;br /&gt;
    &amp;quot;forceOff&amp;quot;: null #To forceOff an instance&lt;br /&gt;
    &amp;quot;rebuild&amp;quot;: null #To rebuild an instance&lt;br /&gt;
    &amp;quot;reboot&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;SOFT&amp;quot;} #To reboot an instance&lt;br /&gt;
    &amp;quot;console&amp;quot;: &amp;quot;novnc&amp;quot; # To obtain a console&lt;br /&gt;
    &amp;quot;vnfs&amp;quot;: [ &amp;quot;06ea139a-a23c-11e5-bc4f-5254004aea96&amp;quot; ],&lt;br /&gt;
    &amp;quot;vms&amp;quot;: [ &amp;quot;369b02a2-6604-11e6-950f-0800273e724c&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
* console type can be &amp;quot;novnc&amp;quot;, &amp;quot;xvpvnc&amp;quot;, &amp;quot;rdp-html5&amp;quot;, &amp;quot;spice-html5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response&#039;&#039;&#039;: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
The response is a dictionary where the key is the affected VM uuid, and the values are the http code returned by the VIM, the VM name, and the result of the description. &lt;br /&gt;
&lt;br /&gt;
Example for a &amp;quot;rebuild&amp;quot; action response with error:&lt;br /&gt;
&lt;br /&gt;
    ---&lt;br /&gt;
    &amp;quot;369b02a2-6604-11e6-950f-0800273e724c&amp;quot;: #VM uuid &#039;vnfs&#039;:&#039;vms&#039;:&#039;uuid&#039;&lt;br /&gt;
        &amp;quot;vim_result&amp;quot;: 503&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;linux-VM&amp;quot;                  #same as &#039;vnfs&#039;:&#039;vms&#039;:&#039;name&#039;&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Conflict: Instance 0a29c298-21d0-4dac-9eda-95a3953ae211 is in an invalid state for &#039;rebuild&#039; (HTTP 409) (Request-ID: req-2a8096d1-1270-402d-bb3f-0b4d6789b233)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example for a &amp;quot;console&amp;quot; action response with success:&lt;br /&gt;
&lt;br /&gt;
    ---&lt;br /&gt;
    &amp;quot;3cf35eba-6604-11e6-950f-0800273e724c&amp;quot;:  #VM uuid &#039;vnfs&#039;:&#039;vms&#039;:&#039;uuid&#039;&lt;br /&gt;
        &amp;quot;vim_result&amp;quot;: 200&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;https://alf-vdevelop2:9096/vnc_auto.html?token=548f5442-32ce-4ffa-b95c-f1d483520cc9&amp;quot;&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;VNF_2VMs-VM2&amp;quot;               #same as &#039;vnfs&#039;:&#039;vms&#039;:&#039;name&#039;&lt;br /&gt;
    &amp;quot;3cf40ee6-6604-11e6-950f-0800273e724c&amp;quot;:&lt;br /&gt;
        &amp;quot;vim_result&amp;quot;: 200&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;https://alf-vdevelop2:9096/vnc_auto.html?token=67451dd3-c039-44f6-9860-1a69aad5338c&amp;quot;&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;VNF_2VMs-VM1&amp;quot;&lt;br /&gt;
    &amp;quot;3cf26f78-6604-11e6-950f-0800273e724c&amp;quot;:&lt;br /&gt;
        &amp;quot;vim_result&amp;quot;: 200&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;https://alf-vdevelop2:9096/vnc_auto.html?token=31f392f0-fee8-4d91-80a0-437b1149cbf8&amp;quot;&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;dataplaneVNF3-VM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Physicalview===&lt;br /&gt;
====GET /openmano/{tenant_id}/physicalview/{datacenter}====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Topology===&lt;br /&gt;
====POST /openmano/{tenant_id}/topology/deploy====&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
	<entry>
		<id>https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1189</id>
		<title>Talk:RO Northbound Interface</title>
		<link rel="alternate" type="text/html" href="https://osm.etsi.org/wikipub/index.php?title=Talk:RO_Northbound_Interface&amp;diff=1189"/>
		<updated>2017-01-30T16:31:07Z</updated>

		<summary type="html">&lt;p&gt;Berpec: Created page with &amp;quot;Several entries on this page are not correct according to what we find in the code.  For example :  &amp;#039;&amp;#039;&amp;#039;On the wiki&amp;#039;&amp;#039;&amp;#039;     POST /openmano/{tenant_id}/instances/{instance_id}/ac...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several entries on this page are not correct according to what we find in the code.&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the wiki&#039;&#039;&#039;&lt;br /&gt;
    POST /openmano/{tenant_id}/instances/{instance_id}/action&lt;br /&gt;
    take an action over a scenario instance. Actions can be {start,pause,resume,shutoff,shutdown,forceOff,rebuild,reboot,console}&lt;br /&gt;
    Params: Content-type: application/yaml&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the code we cand read&#039;&#039;&#039; [https://github.com/nfvlabs/openmano/blob/master/openmano/httpserver.py#L1066 httpserver.py]&lt;br /&gt;
    @bottle.route(url_base + &#039;/&amp;lt;tenant_id&amp;gt;/instances/&amp;lt;instance_id&amp;gt;/action&#039;, method=&#039;POST&#039;)&lt;br /&gt;
    def http_post_instance_scenario_action(tenant_id, instance_id):&lt;br /&gt;
    [...]&lt;br /&gt;
        #parse input data&lt;br /&gt;
        http_content,_ = format_in( &#039;&#039;instance_scenario_action_schema&#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;And then&#039;&#039;&#039; [https://github.com/nfvlabs/openmano/blob/master/openmano/openmano_schemas.py#L732 openmano_schemas.py]&lt;br /&gt;
    &#039;&#039;instance_scenario_action_schema&#039;&#039; = {&lt;br /&gt;
    &amp;quot;title&amp;quot;:&amp;quot;instance scenario action information schema&amp;quot;,&lt;br /&gt;
    &amp;quot;$schema&amp;quot;: &amp;quot;http://json-schema.org/draft-04/schema#&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The documentation states that yaml is expected but the code seem to expect a json.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Same problem for &#039;&#039;openmano/{tenant_id}/instances&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Berpec</name></author>
	</entry>
</feed>