Hi Stackers,

In Atlanta, there were a lot of discussions involving the new(ish) placement service. I'd like to summarize the topics of discussion and highlight what the team aims to get done in the Pike release.

A quick refresher
-----------------

The placement service's mission is to provide a stable, generic interface for accounting of resources that are consumed in an OpenStack deployment. Though the placement service currently resides in the Nova codebase [1], our goal is to eventually lift the service out into its own repository. We do not yet have a date for this forklift, but the placement code has been written from the start to be decoupled from Nova.

Progress to date
----------------

To date, we've made good progress on the quantitative side of the placement API:

* nova-compute workers are reporting inventory records for resources they know about like vCPU, RAM and disk
* Admins can create custom resource classes through the placement REST API
* Providers of resources can be associated with each other via aggregate associations * and nova-scheduler is now calling the placement REST API to filter the list of compute nodes that it inspects during scheduling decisions

We have a patch currently going through the final stages of review that integrates the Ironic virt driver with the placement API's custom resource classes [2]. This patch marks an important milestone for both Nova and Ironic with regards to how Ironic baremetal resources are accounted for in the system.

Priorities for Pike
-------------------

At the PTG, we decided that the following are our highest priority focus areas (in order):

1) Completion of the shared resource provider modeling and implementation

Shared storage accounting is the primary use case here, along with Neutron routed networks.

2) Getting the qualitative side of the placement API done

As mentioned above, most work to-date has focused on the quantitative side of the request spec. The other side of the request spec is the qualitative one, which we're calling "traits". Providers of resources (compute nodes, Ironic baremetal nodes, SR-IOV NICs, FPGAs, routed network pools, etc) can be decorated with these string traits to indicate features/capabilities of the provider.

For example, a compute node might be decorated with the trait HW_CPU_X86_AVX2 or an SR-IOV NIC might be decorated with a trait indicating the physical network associated with the NIC.

The placement API will provide REST endpoints for managing these traits and their association with resource providers.

3) Merging support for nested resource providers concepts

Canonical examples of nested resource providers include SR-IOV PFs and NUMA nodes and sockets.

Much work for this has already been proposed in previous cycles [3]. We need to push forward with this and get it done.

Implementation news
-------------------

Discussions at the PTG identified that in order to actually implement priority #1, however, we would need to complete #2 first :)

And so, we are currently attempting to get the os-traits library in shape [4], getting the nova-spec approved for the placement traits API [5] and getting the traits implementation out of WIP mode [6].

Once the traits work is complete, the shared storage providers work can be resumed [7].

Once that work is complete, we will move on to the aforementioned nested resource providers work as well as integration with the nova-scheduler for traits and shared providers.

Cinder
------

We had a nice discussion with folks in the Cinder team about what the placement service is all about and how Cinder can use it in the future. We've asked the Cinder team to help us identify block-storage-specific qualitative traits that can be standardized in the os-traits library. We're looking forward to helping the Cinder community do storage-aware scheduling affinity using the placement API in Queens and beyond.

Thanks all for reading!

Best,
-jay

[1] https://github.com/openstack/nova/tree/master/nova/api/openstack/placement
[2] https://review.openstack.org/#/c/437602/
[3] https://review.openstack.org/#/q/project:openstack/nova+branch:master+topic:bp/nested-resource-providers [4] https://review.openstack.org/#/q/project:openstack/os-traits+branch:master+topic:normalize
[5] https://review.openstack.org/#/c/345138/
[6] https://review.openstack.org/#/q/topic:bp/resource-provider-tags
[7] https://review.openstack.org/#/q/status:abandoned+project:openstack/nova+branch:master+topic:bp/shared-resources-pike

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to