Merge "Track resources using Placement"

This commit is contained in:
Jenkins 2017-07-05 04:03:47 +00:00 committed by Gerrit Code Review
commit 953ab6888e
1 changed files with 162 additions and 0 deletions

View File

@ -0,0 +1,162 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=================================================
Track baremetal resources using Placement service
=================================================
https://blueprints.launchpad.net/mogan/+spec/track-resources-using-placement
This spec proposes using placement service for baremetal resources tracking.
The placement service is intended to enable more effective accounting of
resources and better scheduling of various entities in the cloud.
Problem description
===================
We'd like to be able to schedule not only based on baremetal node resources,
but also other resources in the cloud like shared storage. So we need to move
to this more generic modeling of quantitative and qualitative resources.
Use Cases
---------
Cloud operators want to be able to add new classes of resources to the system
with a generic model and do so without any downtime caused by database schema
migrations.
Proposed change
===============
* We will define new resource classes for each node accodring to what is in
the ironic node's `resource_class` attribute.
* Generate the resource provider for each baremetal node to track the
resources, set provider's inventory to a single record of custom resource
class. The resource tracking model is as the following::
resource classes: CUSTOM_GOLD CUSTOM_SILVER
/ \ |
resource providers: baremetal_node1 baremetal_node2 baremetal_node2
| | |
inventories: {'CUSTOM_GOLD': 1} {'CUSTOM_GOLD': 1} {'CUSTOM_SILVER': 1}
* As we consume baremetal nodes atomically not piecemeal, so the inventory data
for such resource provider should be as::
Inventory: {
"resource_provider_id": 1,
"resource_class_id": 10001,
"total": 1,
"reserved": 0,
"min_unit": 1,
"max_unit": 1,
"step_size": 1,
"allocation_ratio": 1.0
}
* For **qualitative** aspects of the baremetal resources, the placement traits
is targeted to support this, we can use custom traits to define what the
resource provider's characteristics is.
* Modify resource tracker to periodically report node resources to placement
service, which will also remove the orphan nodes.
* Needs to change filter_scheduler to call placement REST API to get filtered
nodes like below::
GET /resource_providers?resources=CUSTOM_GOLD:1
Alternatives
------------
None
Data model impact
-----------------
This will remove ComputeNodes and ComputePorts objects.
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
This will break all mogan deployments as we migrate resources tracking to
another service, but as we don't have any release yet, so we suppose there's
no mogan deployment.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
liusheng
Other contributors:
zhenguo
Work Items
----------
* Add placement client and config options.
* Update resource tracker to report resources to placement.
* Adjust scheuler filters for such refactoring.
* remove the compute_nodes and compute_ports resources objects.
* Add UT and docs.
Dependencies
============
None
Testing
=======
Unit Testing will be added.
Documentation Impact
====================
Docs about new flavor will be added.
References
==========
None