tacker-specs/specs/mitaka/automatic-resource-creation.rst
Nguyen Hai d543040a4e Refactor and clean up specs dir
- Follow new PTI building docs
- Add dir for Stein specs
- Remove skeleton.rst file because the template is enough
- Remove archive specs because they are invalid.
- Remove test_tiltles.py because it is useless (no actuall check
the spec files), instead, enable pep8 and waring-as-error for
.rst files, clear error those files.
- Add placeholder.rst for stein/rocky dir, if not they will
show error when building docs, delete them when it has
approved specs.

Change-Id: I8c387c0a480844b111562a9e77eac6ab26c58bce
2018-04-05 15:21:56 +09:00

243 lines
6.9 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
============================================================
Automatic openstack resource creation based on VNFD template
============================================================
https://blueprints.launchpad.net/tacker/+spec/automatic-resource-creation
Creating the custom openstack resources like flavors/networks/image is one
of the requirement from the VNF vendors. This blueprint proposes to add the
support for automatic resource creation while onboarding the VNFD/ creating
the VNF in tacker.
Problem description
===================
With the current version of tacker, telco operators have to create the openstack
resources before creating VNF. And VNF vendors cannot add the VDU details in the
VNFD. For example VNF vendors cannot specify:
1)The VM details of the VDU like cpu, memory and disk etc.,
2)The network details for the VDU like cidr, network_type etc.,
3)The image details which is not present in glance.
Proposed Change
===============
Introducing new host properties in VNFD template will give an initial pointer
to provide the solution for the tacker. This spec will address the automatic
creation of flavor, network and image.
Automatic Flavor Creation
--------------------------
Template Changes
~~~~~~~~~~~~~~~~
.. code-block:: ini
topology_template:
node_templates:
my_server:
type: tosca.nodes.Compute
capabilities:
host:
properties:
num_cpus: 2
disk_size: 10 GB
mem_size: 512 MB
When the user give host properties, Tacker will create a new flavor with those
details by adding those details in heat template. Tacker will handle three
minimum host properties like 'disk_size' and 'num_cpus' and 'mem_size'.
To refer the other properties, refer [#]_.
Tacker will fetch the properties from TOSCA template and add them to HOT
as below:
.. code-block:: ini
heat_template_version: 2015-04-30
resources:
my_server_flavor_<UUID>:
type: OS::Nova::Flavor
properties:
disk: 10
ram: 512
vcpus: 2
As 'vcpus' and 'ram' are required parameters in HOT, so if the template doesn't have
those details, Tacker will provide default values(vcpus=1 and ram=512).
Automatic Image Creation
------------------------
Template Changes
~~~~~~~~~~~~~~~~
.. code-block:: ini
vdu1:
artifacts:
vm_image:
type: tosca.artifacts.Deployment.Image.VM
file: http://URL/vRouterVNF.qcow2
In the modified template, users can either specify the URL for the VM image or
glance image name in `file` type. Tacker will create the image if URL is specified
in the `file` parameter.
In this case, we can have three options to automatically create and upload the image:
1). Specify the image URI in the template and no parameterization
If we choose this option, we can't parameterize the `vm_image`. And tackers upload the image
while onboarding the VNFD using glance client. It is one step process. With this option,
we have to maintain the state of the VNFD based on image creation.
2). Provide the image in CSAR Zip.
Using this option, we have to ship the bundle with image needed for that VNFD. So Tacker will
upload the image at onboarding time. With this option, we have to maintain the state
of the VNFD based on image creation.
3). Provide parameterization and upload images at the time of VNF creation.
Here we can parameterize the `vm_image` attribute. With this option Tacker will upload the image into
glance at VNF deployment time using HOT template.
Let's take an example of how TOSCA image artifact can be converted to HOT image resource.
TOSCA:
.. code-block:: ini
artifacts:
vm_image:
type: tosca.artifacts.Deployment.Image.VM.qcow2
file: http://filer/vnfimages/vrouter.qcow2
Heat:
.. code-block:: ini
image:
type: OS::Glance::Image
properties:
container_format: bare
disk_format: qcow2
location: http://filer/vnfimages/vrouter.qcow2
We can remove statefulness of VNFD with this option.
In this spec, we prefer the third option.
Automatic Network Creation
--------------------------
Template Changes
~~~~~~~~~~~~~~~~
.. code-block:: ini
internal_datapath:
type: tosca.nodes.nfv.VL.ELAN
network_name: net_internal_dp
ip_version: 4
cidr: '192.168.0.0/24'
start_ip: '192.168.0.50'
end_ip: '192.168.0.200'
gateway_ip: '192.168.0.1'
In this modified template, users can specify the CIDR of the network, they want
to deploy VNF. If the user specify the CIDR and not the network_id, tacker will
automatically create network and corresponding subnet. Refer [#]_ for the
properties the tacker will support in network_interfaces. For the networks, tacker
will create the network resources at VNF creation time using heat code. So we are not
storing the network details as network resources are associated with heat stack details.
Let's see how the above TOSCA template can be converted to HOT network resource.
.. code-block:: ini
net_internal_dp:
type: OS::Neutron::Net
properties:
name: net_internal_dp
net_internal_dp_subnet:
type: OS::Neutron::Subnet
properties:
network_id: { get_resource: private_net }
cidr: 192.168.0.0/24
gateway_ip: 192.168.0.1
allocation_pools: [{"end": "192.168.0.200", "start": "192.168.0.50"}]
Data model impact
-----------------
Flavors, networks and images will be created while deploying VNF, and will be removed automatically
by heat at the deletion VNF. So there won't be any change in data model.
REST API impact
---------------
None
Other end user impact
---------------------
User can use TOSCA templates in addition to Tacker defined templates after this spec.
Note:
Auto image upload is not suitable for VNFs that would get instantiated multiple times.
It will cause the same glance image to be uploaded multiple times.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
- Bharath Thiruveedula (bharath-ves)
Other contributors:
None
Work Items
----------
* Modify the calls of VNF create, so that VNF operations will be handled by
plugin.
Dependencies
============
None
Testing
=======
This Blueprint provides unit test cases for each of the deliverables.
Documentation Impact
====================
devref will be modified by providing the instructions on how to adapt the new
template changes.
References
==========
.. [#] `<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/TOSCA-Simple-Profile-YAML-v1.0.html>`_
.. [#] `<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/csprd01/TOSCA-Simple-Profile-YAML-v1.0-csprd01.html#_Toc430015804>`_