blob: ff330bb2f0ae122dd0905eaf489e7380a4953d7d [file] [log] [blame]
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (c) 2017-2018 VMware, Inc.
==================================
MultiCloud HPA Discovery Pluggable
==================================
To better support more HPA capabilities without modifying the implementation code
for Multicloud. So we need to extract the HPA discovery part of the code and make
it into many drivers(HPA Discovery Driver). if we want to add new HPA feature or
modify the implementation code for the existing feature, we just need to modify
HPA Discovery Driver code.
Problem Description
===================
Currently, every time we add or modify an HPA feature, we need to modify the part
of HPA discovery code, which will affect the other HPA features. It is difficult
for device vendors to participate because they need to understand the entire ONAP
process.
In fact, we should design it so that it only requires the vendor to focus on both
discovery and use.
Propose Change
==============
Extract the original part of HPA discovery code and make it into many drivers. we
need to add hooks in Openstack, Kubernetes and other plugins. then we develop
drivers for various language. we will get below benefit:
#. Each driver development is independent, and modifying the driver and adding
the driver does not have any impact on each other.
#. It is easier for vendors to participate in the development of ONAP. They no
longer need to understand the whole working principle of ONAP, but only need to
understand the interface of the driver.
#. Any driver problem will not affect the HPA discovery process.
#. The publishing difficulty of openstack package is reduced. Even if the latest
driver has a little problem. We just need to point to the stable driver version
of the pip package in the dockerfile.
We plan to develop drivers in python language(in R6 release) and drivers in golang
language(in R7 release).
Add New Driver
-------------------------------
The hardware vendor determines whether upstream drivers. If vendor upstream driver,
then submitted the driver code to multicloud/openstack repo. then He/She will also
need package the driver and push to pip repo for distribution. In case that vendor
doesn't upstream the driver, he/she could maintain the driver in local repo as well.
# Dockerfile(Example)
from multi-windriver:1.4.0
pip install <hpa-discovery-driver1(device vendor1)>
pip install <add hpa-discovery-driver2(device vendor2)>
Driver Version Control
----------------------
We will make HPA discovery drivers as pip packages to release pip REPO. name like:
onap-device-driver-<drivername>-<version>
when we release the plugin, we will add the driver of pip package to the docker.
Driver code Management
----------------------
For python language driver, we put it into multi-cloud openstack plugin.
For golang language driver, we put it into multi-cloud kubernetes plugin.
Security
--------
we solve one flavor each time, the result maximin is 1500 bytes. We will verify the
validity of the data?
CRUD
----
Driver don't write AAI, plugin will write AAI. driver just format data.
Create
^^^^^^
Fill discover HPA data, transform data, format data in the driver, and then return
the data, call AAI.
Delete
^^^^^^
Driver don't write AAI and just return resource URL accord to flavor information.
Update
^^^^^^
update flow is same as create flow.
please see https://git.onap.org/multicloud/openstack/tree/share/common/msapi/helper.py L142
Consume
-------
OOF can parse the AAI data, the driver just need to follow AAI schema. OOF output is
oof_directives which is defined in https://git.onap.org/multicloud/framework/tree/docs/specs/multicloud_infra_workload.rst.
check VIM capacity will store in driver. driver will get information from "Collectd". This will be completed in next release.
FCAPS
-----
Driver with some issue: alarm(pool or other mode).
if driver have some issues, the hpa capabilities will be empty.
Usage
=====
Local use
---------
To integrate with multicloud openstack plugin, run below command
$ python setup.py build
$ python setup.py install
based on pip package
--------------------
To integrate with multicloud openstack plugin, run below command in create docker image
$ pip install <package-name>
Tests
=====
#. Unit Tests with tox.
#. Integration test will use SRIOV-NIC as example.
Reference
=========
https://wiki.onap.org/display/DW/Multicloud+HPA+Discovery+Pluggable