It turns out that all the callers of methods that return ProviderIds access the data using attributes that are already present on the object provided by a sql alchemy RowProxy object (which is the result of iterating a ResultProxy object, returned by sqla.execute()). Creating a namedtuple is redundant and adds some processing cost [1]. However, the AnchorIds namedtuple used in the same file _is_ necessary because it provides a hashable type required by the set that wraps the collection of AnchorIds. The other user of namedtuple, RPCandidate, in placement/objects/rp_candidates.py has a specific interface for which a namedtuple is correct. [1] provider_ids_from_rp_ids was identified as being a major contributor when doing performance profiling. Most of the cost is executing with the database, but the tuple creation is a factor. Change-Id: I1e1522eae7b4360cf57c34164612ae228fad14a3
If you are viewing this README on GitHub, please be aware that placement development happens on OpenStack git and OpenStack gerrit.
Team and repository tags
OpenStack Placement
OpenStack Placement provides an HTTP service for managing, selecting, and claiming providers of classes of inventory representing available resources in a cloud.
API
To learn how to use Placement's API, consult the documentation available online at:
For more information on OpenStack APIs, SDKs and CLIs in general, refer to:
Operators
To learn how to deploy and configure OpenStack Placement, consult the documentation available online at:
In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at:
Developers
For information on how to contribute to Placement, please see the contents of CONTRIBUTING.rst.
Further developer focused documentation is available at: