Add spec-lite NetApp ActiveIQ Weigher for Bobcat
Adds the spec-lite for the integration between NetApp ActiveIQ software with Manila Scheduler weigher phase. It also adds the bobcat release directory specs. Change-Id: I7ecbad25660f10170172fc2a07507000bfafde75
This commit is contained in:
parent
eb3ba53a44
commit
69acbe290c
|
@ -15,6 +15,16 @@ These specifications can be implemented over multiple releases.
|
||||||
|
|
||||||
specs/release_independent/*
|
specs/release_independent/*
|
||||||
|
|
||||||
|
Bobcat approved specs
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:glob:
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
specs/bobcat/*
|
||||||
|
|
||||||
|
|
||||||
Antelope approved specs
|
Antelope approved specs
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,143 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
Spec Lite: Scheduler Weigher based on Netapp Active IQ
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
|
:problem: The Manila Scheduler weighers are generic, it is designed to
|
||||||
|
weigh based on the backend stats, being restricted to that set of
|
||||||
|
information.
|
||||||
|
For some NetApp environments, it could be more helpful to have a more
|
||||||
|
specific tool that tracks the storages status (space, cpu usage and
|
||||||
|
several others) and use statistics and artificial intelligence
|
||||||
|
techniques for weighing the hosts in a more efficient manner.
|
||||||
|
|
||||||
|
:solution: To make a better weight evaluation, NetApp has its own software
|
||||||
|
called ``Active IQ (AIQ)`` [1]. The ``AIQ`` connects to the NetApp
|
||||||
|
storages collecting and processing the status of each device
|
||||||
|
dynamically. Using REST API endpoints, external services can request
|
||||||
|
the ``AIQ`` to weigh the available storages for a given share
|
||||||
|
creation. API request example::
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"method": "POST",
|
||||||
|
"url": "https://10.63.167.192/api/storage-provider/data-placement/balance",
|
||||||
|
"args": [],
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/json",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
},
|
||||||
|
"json": {
|
||||||
|
"capacity": "10GB",
|
||||||
|
"eval_method": 0,
|
||||||
|
"opt_method": 0,
|
||||||
|
"priority_order": [
|
||||||
|
"ops",
|
||||||
|
"latency",
|
||||||
|
"volume_count",
|
||||||
|
"size"
|
||||||
|
],
|
||||||
|
"ssl_key": "bbda43aa-aee9-11ed-a4cd-005056bd7087",
|
||||||
|
"separate_flag": false,
|
||||||
|
"resource_keys": [
|
||||||
|
"1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=b22ea874-eada-4c31-b6f9-1cf95e2bdacc",
|
||||||
|
"1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=a39c5d4f-2ca9-4910-b57f-71a7936656c9",
|
||||||
|
"1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=ec6a23a2-c98f-4640-8b4b-4615c1969751"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
The API response::
|
||||||
|
|
||||||
|
{
|
||||||
|
"request_ok": true,
|
||||||
|
"status_code": 200,
|
||||||
|
"headers": {
|
||||||
|
"Expires": "0",
|
||||||
|
"Cache-Control": "no-cache, no-store, must-revalidate",
|
||||||
|
"X-Powered-By": "NetApp Application Server",
|
||||||
|
"Server": "NetApp Application Server",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Pragma": "no-cache",
|
||||||
|
"X-Frame-Options": "SAMEORIGIN"
|
||||||
|
},
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"scores": {
|
||||||
|
"total_weighted_score": 30.0
|
||||||
|
},
|
||||||
|
"key": "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=a39c5d4f-2ca9-4910-b57f-71a7936656c9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"scores": {
|
||||||
|
"total_weighed_score": 20.0
|
||||||
|
},
|
||||||
|
"key": "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=b22ea874-eada-4c31-b6f9-1cf95e2bdacc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"scores": {
|
||||||
|
"total_weighted_score": 10.0
|
||||||
|
},
|
||||||
|
"key": "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=ec6a23a2-c98f-4640-8b4b-4615c1969751"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
The idea is proposing a vendor specific Scheduler weigher called
|
||||||
|
``NetAppActiveIQWeigher``, which will call the NetApp ``AIQ`` for
|
||||||
|
getting the weight of each host. If the list of host contains at
|
||||||
|
least one non NetApp host, the weigher is skipped.
|
||||||
|
In order to connect to the external service, the new weigher
|
||||||
|
requires connection configurations set by the cloud administrator,
|
||||||
|
they are: ``aiq_username``, ``aiq_password``, ``aiq_hostname`` and
|
||||||
|
``aiq_port``. For more weighing flexibility, the weigher will
|
||||||
|
contain the following optional configurations: ``aiq_eval_method``,
|
||||||
|
``aiq_opt_method``, ``aiq_priority_order`` and ``aiq_separate_flag``
|
||||||
|
(see the Active IQ documentation).
|
||||||
|
The cloud administrator may want to filter the storages according
|
||||||
|
to its performance and storage objectives for a new workload. The
|
||||||
|
``AIQ`` has the concept of performance service level that provide
|
||||||
|
this functionality and it can be informed during the weight request.
|
||||||
|
As result, this spec is proposing to add a new NetApp scoped
|
||||||
|
extra-spec called ``netapp:aiq_performance_level`` as a UUID string
|
||||||
|
representing the ``AIQ`` performance service level.
|
||||||
|
The weight request requires the set of aggregates UUIDs that will be
|
||||||
|
evaluated. Unfortunately, the NetApp driver stats does not contain
|
||||||
|
it, so the driver have to start to report the UUID of each pool.
|
||||||
|
It could be collected once during driver start up, not affecting
|
||||||
|
the driver life cycle.
|
||||||
|
|
||||||
|
:impacts:
|
||||||
|
|
||||||
|
- NetApp Driver Impact.
|
||||||
|
- The driver will start reporting the NetApp aggregate UUID
|
||||||
|
|
||||||
|
- Documentation Impact
|
||||||
|
- Admin guide
|
||||||
|
- Contributor guide
|
||||||
|
|
||||||
|
- Scheduler Impact
|
||||||
|
- Propose a vendor weigher: ``NetAppActiveIQWeigher``
|
||||||
|
|
||||||
|
- CI Impact
|
||||||
|
- Add the new weigher for the dummy driver jobs
|
||||||
|
- Add the new weigher for the NetApp jobs
|
||||||
|
|
||||||
|
This implementation may impact the performance of the scheduler
|
||||||
|
weigher phase, since the NetApp weigher will run a network request.
|
||||||
|
|
||||||
|
:alternative: There is no alternative other than keep running with generic
|
||||||
|
weighers.
|
||||||
|
|
||||||
|
:timeline: Include in Bobcat release.
|
||||||
|
|
||||||
|
:link:
|
||||||
|
* [1]: https://docs.netapp.com/us-en/active-iq-unified-manager/index.html
|
||||||
|
|
||||||
|
:assignee: felipe_rodrigues
|
Loading…
Reference in New Issue