From c5437922439425ae2924147a090474fa9aeb7192 Mon Sep 17 00:00:00 2001 From: Zhenguo Niu Date: Tue, 20 Jun 2017 16:29:50 +0800 Subject: [PATCH] Track resources using Placement This proposes to change to use Placement service for tracking baremetal resources Partially Implements: bp track-resources-using-placement Change-Id: I4d8483b5d8fb04db091d72f37b40925b016c953b --- .../track-resources-using-placement.rst | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 specs/pike/approved/track-resources-using-placement.rst diff --git a/specs/pike/approved/track-resources-using-placement.rst b/specs/pike/approved/track-resources-using-placement.rst new file mode 100644 index 0000000..9a1e617 --- /dev/null +++ b/specs/pike/approved/track-resources-using-placement.rst @@ -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