)]}'
{"specs/rocky/approved/placement-mirror-host-aggregates.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6188f81d434e49e95897b1bc49b6029942654f09","unresolved":false,"context_lines":[{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as ``placement"},{"line_number":31,"context_line":"aggregates`` and associated with the ``resource providder`` records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_1a5f11e6","line":30,"range":{"start_line":30,"start_character":57,"end_line":30,"end_character":68},"updated":"2018-02-15 17:40:27.000000000","message":"double backticks here \u0026 below will render as fixed-with.  Is that intentional?  Did you mean for these terms to be actual table names or something?","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97a6186e918b1e07eac05eb75b0b30cc10c2c9e5","unresolved":false,"context_lines":[{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as ``placement"},{"line_number":31,"context_line":"aggregates`` and associated with the ``resource providder`` records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_47ece1f2","line":30,"range":{"start_line":30,"start_character":57,"end_line":30,"end_character":68},"in_reply_to":"3fa0c359_1a5f11e6","updated":"2018-02-15 19:04:48.000000000","message":"Done","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6188f81d434e49e95897b1bc49b6029942654f09","unresolved":false,"context_lines":[{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as ``placement"},{"line_number":31,"context_line":"aggregates`` and associated with the ``resource providder`` records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. replace_: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_fa44a51d","line":31,"range":{"start_line":31,"start_character":48,"end_line":31,"end_character":57},"updated":"2018-02-15 17:40:27.000000000","message":"provider","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97a6186e918b1e07eac05eb75b0b30cc10c2c9e5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as ``placement"},{"line_number":31,"context_line":"aggregates`` and associated with the ``resource providder`` records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. replace_: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_27ef55ea","line":31,"range":{"start_line":31,"start_character":48,"end_line":31,"end_character":57},"in_reply_to":"3fa0c359_fa44a51d","updated":"2018-02-15 19:04:48.000000000","message":"Done","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6188f81d434e49e95897b1bc49b6029942654f09","unresolved":false,"context_lines":[{"line_number":51,"context_line":"check with the placement API to determine if placement has a record of the host"},{"line_number":52,"context_line":"aggregate, and if not, populate the placement service with a record for the"},{"line_number":53,"context_line":"nova host aggregate. Likewise, on update or delete of the nova host aggregate,"},{"line_number":54,"context_line":"the placement service will be informed of the change."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":57,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_7afe55af","line":54,"updated":"2018-02-15 17:40:27.000000000","message":"Correct me if I\u0027m wrong, but aggregate \"records\" don\u0027t exist unless they\u0027re tied to resource providers, right?  So do we have a chicken/egg problem here if the resource tracker hasn\u0027t yet populated placement with the initial RP for the compute host?","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"33529975dac819a1692d4f5d88aa2345290ac698","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method to"},{"line_number":51,"context_line":"check with the placement API to determine if placement has a record of the host"},{"line_number":52,"context_line":"aggregate, and if not, populate the placement service with a record for the"},{"line_number":53,"context_line":"nova host aggregate. Likewise, on update or delete of the nova host aggregate,"},{"line_number":54,"context_line":"the placement service will be informed of the change."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":57,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_5a0119af","line":54,"range":{"start_line":50,"start_character":0,"end_line":54,"end_character":53},"updated":"2018-02-15 17:39:02.000000000","message":"Won\u0027t we also need to sync the aggregate members? Placement can\u0027t filter on aggregate membership unless all the aggregate associations are sync\u0027d, too.","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"85219a0990f3ca6bce672f34a9ba9646a8c63445","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method to"},{"line_number":51,"context_line":"check with the placement API to determine if placement has a record of the host"},{"line_number":52,"context_line":"aggregate, and if not, populate the placement service with a record for the"},{"line_number":53,"context_line":"nova host aggregate. Likewise, on update or delete of the nova host aggregate,"},{"line_number":54,"context_line":"the placement service will be informed of the change."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":57,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_9a2321bf","line":54,"range":{"start_line":50,"start_character":0,"end_line":54,"end_character":53},"in_reply_to":"3fa0c359_5a0119af","updated":"2018-02-15 18:01:36.000000000","message":"@edleafe: you\u0027re absolutely right. will fix to mention add/remove_host methods.","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"85219a0990f3ca6bce672f34a9ba9646a8c63445","unresolved":false,"context_lines":[{"line_number":51,"context_line":"check with the placement API to determine if placement has a record of the host"},{"line_number":52,"context_line":"aggregate, and if not, populate the placement service with a record for the"},{"line_number":53,"context_line":"nova host aggregate. Likewise, on update or delete of the nova host aggregate,"},{"line_number":54,"context_line":"the placement service will be informed of the change."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":57,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_9a0c8143","line":54,"in_reply_to":"3fa0c359_7afe55af","updated":"2018-02-15 18:01:36.000000000","message":"Yes. We\u0027ll need to hook this into the add_host/remove_host methods and in the _from_db_obj() method, we\u0027ll need to check to see if the _members attribute has been populated and if so, iterate over those.","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97a6186e918b1e07eac05eb75b0b30cc10c2c9e5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method to"},{"line_number":51,"context_line":"check with the placement API to determine if placement has a record of the host"},{"line_number":52,"context_line":"aggregate, and if not, populate the placement service with a record for the"},{"line_number":53,"context_line":"nova host aggregate. Likewise, on update or delete of the nova host aggregate,"},{"line_number":54,"context_line":"the placement service will be informed of the change."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":57,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa0c359_e7bacddf","line":54,"range":{"start_line":50,"start_character":0,"end_line":54,"end_character":53},"in_reply_to":"3fa0c359_9a2321bf","updated":"2018-02-15 19:04:48.000000000","message":"Done","commit_id":"4dfde3fb54df1a786e6451ddc560c8f0cd6ef283"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"759dc7b46a2da28d4ff4aad09e717b410f3df28d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"against a nova host aggregate when evaluating whether a hypervisor host meets"},{"line_number":23,"context_line":"certain filtering criteria."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. filter_: https://github.com/openstack/nova/blob/stable/queens/nova/scheduler/filters/aggregate_multitenancy_isolation.py"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa0c359_c770f1df","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":10},"updated":"2018-02-15 19:22:06.000000000","message":"Oh, does this underscore go before the tag name?\n\n(Same below)","commit_id":"06a02bfcf2a2bba6e7e9a2f9ad0e2c6f51a48cc1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e9040f1c4386e24479b0c5414c54a5a46577253e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"against a nova host aggregate when evaluating whether a hypervisor host meets"},{"line_number":23,"context_line":"certain filtering criteria."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":".. filter_: https://github.com/openstack/nova/blob/stable/queens/nova/scheduler/filters/aggregate_multitenancy_isolation.py"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa0c359_ca2b182e","line":25,"range":{"start_line":25,"start_character":9,"end_line":25,"end_character":10},"in_reply_to":"3fa0c359_c770f1df","updated":"2018-02-15 19:42:57.000000000","message":"guh, maybe.","commit_id":"06a02bfcf2a2bba6e7e9a2f9ad0e2c6f51a48cc1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"78c1094ece0c1f7ee9996dfa040afdbc0c45491d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_b2686fba","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":16},"updated":"2018-02-16 15:56:12.000000000","message":"There is a proposal to change this in https://review.openstack.org/#/c/529135/6/specs/rocky/approved/aggregate-affinity.rst@68\n\nIf both spec is approved then we need to decide how to order them.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4152cacdb6056b99bc0f0eb252cf3c6dfc4bd332","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_f7321310","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":16},"in_reply_to":"3fa0c359_726700eb","updated":"2018-03-13 10:30:07.000000000","message":"I feel that we need to check the ordering of the two specs.\n\nIn this spec aggregates will be created in Placement based on what host aggregates we have in nova. The other spec changes what can be in an aggregate (allowing compute nodes to be part of an aggregate). \nIf we do the mirroring first and then extending what can be in an aggregate then we have to make sure that when we extend aggregates with compute nodes during the impl of the other spec we mirror those compute node memberships as well to placement.\nIf do the other way around and extend the aggregate membership first and then implement the mirroring then this will not be a problem.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69ef674f297c5d6905ffc6911998d7fb7e8925c1","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_726700eb","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":16},"in_reply_to":"3fa0c359_b2686fba","updated":"2018-02-20 17:58:20.000000000","message":"I\u0027m not following you on this, Gibi, could you elaborate on what your concern is? For the aggregate-affinity spec you listed above (which I wrote), the significant change would be that nova host aggregates would begin to be \"associatable\" with compute nodes and not just nova-compute service workers. But I\u0027m not entirely sure how that impact this particular spec here...","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fae430ad957585b76c476cccecae71e2fb42ac72","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"In order to `replace`_ some of these filters with similar filter parameters to"},{"line_number":28,"context_line":"the ``GET /allocation_candidates`` placement REST API, we first need to ensure"},{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_fa3daeba","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":16},"in_reply_to":"df7087c5_f7321310","updated":"2018-03-16 15:07:26.000000000","message":"The other spec is de-prioritized compared to this one. Plus, I\u0027m reworking this spec to take Sylvain\u0027s advice to heart. If we do this in the Compute API, there should be minimal disruption to the other spec\u0027s work.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"09f0f04d97c8382ef13c6072463ab782a916d023","unresolved":false,"context_lines":[{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. _Placement aggregate allocation ratios: https://blueprints.launchpad.net/nova/+spec/placement-aggregate-allocation-ratios"},{"line_number":45,"context_line":".. _Placement filter requests: https://blueprints.launchpad.net/nova/+spec/placement-req-filter"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_6a3f9a86","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":95},"updated":"2018-03-16 06:29:07.000000000","message":"I confused which use-case we are going to match.\n\nFor the \u0027`AggregateMultiTenancyIsolationFilter`\u0027, that can be implement by the traits https://etherpad.openstack.org/p/nova-ptg-rocky@534\n\nFor the aggregate allocation ratio, we have CLI to set allocation ratio to RP in the aggregate.\n\nTry to understand why we need such complex sync between nova and placement. Why not we just add a simple CLI to sync the aggregate to the Placement. I thought in the future we want to instead of nova aggregate with Placement filter like required and member_of.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"909edcebcad0edb045927aa447bf7bca9373e6b5","unresolved":false,"context_lines":[{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. _Placement aggregate allocation ratios: https://blueprints.launchpad.net/nova/+spec/placement-aggregate-allocation-ratios"},{"line_number":45,"context_line":".. _Placement filter requests: https://blueprints.launchpad.net/nova/+spec/placement-req-filter"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_a7571f26","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":95},"in_reply_to":"df7087c5_4ad896ed","updated":"2018-03-16 15:00:58.000000000","message":"@alex_xu: The issue with using traits to decorate resource providers for the purposes of multi-tenant isolation is that the operator will need to add a custom trait for every tenant and then associate that custom trait to all resource providers that that tenant will have access to. Then, they will need to decorate all resource providers that are *not* intended for a single tenant (or a small group of tenants) with another custom trait that indicates the provider is for \"non-dedicated\" resources. This last custom trait indicating the provider provides \"non-dedicated\" resources will then need to be dynamically added to the request to placement as a \"forbidden trait\" to prevent lower priority instances from being placed on resource providers that are \"reserved\" (via the custom trait) for some tenant.\n\nCompare that complexity with Dan\u0027s placement-request-filter which does a query in the conductor (or maybe nova api) against the nova host aggregate metadata to determine which nova host aggregate is associated with the calling tenant. If an aggregate is found matching the tenant, then a member_of\u003d\u003cAGG_UUID\u003e query parameter will be sent to the placement service to filter for only those hosts which are in that aggregate. Much simpler.\n\nHowever, in order for this to work, placement needs to know about nova host aggregates, and it currently does not know about nova host aggregates. That\u0027s what this blueprint is for.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1fa7d39305183c90459b15ddfd1228949c81df83","unresolved":false,"context_lines":[{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. _Placement aggregate allocation ratios: https://blueprints.launchpad.net/nova/+spec/placement-aggregate-allocation-ratios"},{"line_number":45,"context_line":".. _Placement filter requests: https://blueprints.launchpad.net/nova/+spec/placement-req-filter"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_4ad896ed","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":95},"in_reply_to":"df7087c5_6a3f9a86","updated":"2018-03-16 06:54:46.000000000","message":"I see the aggregate allocation ratio is going to another direction.(https://review.openstack.org/#/c/544683/5) But still didn\u0027t get why it is for multi tenant isolation also.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e34b20241fbc77a1814e81d2a4263006d845c1c1","unresolved":false,"context_lines":[{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. _Placement aggregate allocation ratios: https://blueprints.launchpad.net/nova/+spec/placement-aggregate-allocation-ratios"},{"line_number":45,"context_line":".. _Placement filter requests: https://blueprints.launchpad.net/nova/+spec/placement-req-filter"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b6666129","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":95},"in_reply_to":"df7087c5_a7571f26","updated":"2018-03-18 04:22:19.000000000","message":"@jay, thanks for all the detail reply.\n\nSo we don\u0027t like the complex in the filter parameters of allcoation_candidates? At least for attaching traits to the placement aggregate, that is can be simple with CLI tools.\n\nAnd for \u0027non-dedicated\u0027 resources, with member_of,  we still need to attach \u0027non-dedicated\u0027 trait to all the `non-dedicated` provider, then use \u0027forbidden trait\u0027 filter? Sounds like we still need trait.\n\nAnyway, if we don\u0027t want to use traits and still want to use aggregate, I see the problem. There is no metadata/trait attach to the placement aggregate, and that isn\u0027t a thing we want to support. I agree also.\n\nSo can we let the operator use Placement API to group the RPs with Aggregate directly, and then operator fill the mapping of aggregate and tenant in the flavor extra spec, then the pre-request-filter parse that mapping? The difference with this spec, the mapping is in the flavor, and we don\u0027t need the complex mirror. \n\nSorry, really doesn\u0027t like the mirror...","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ebc6261c79280cfa003cc93c30a36982775400c1","unresolved":false,"context_lines":[{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. _Placement aggregate allocation ratios: https://blueprints.launchpad.net/nova/+spec/placement-aggregate-allocation-ratios"},{"line_number":45,"context_line":".. _Placement filter requests: https://blueprints.launchpad.net/nova/+spec/placement-req-filter"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_0c6fd5c5","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":95},"in_reply_to":"df7087c5_b6666129","updated":"2018-03-20 03:05:04.000000000","message":"For RBAC problem, if we go to the way I said above. We fill the mapping of aggregate and tenant in the flavor extra spec. The flavor extra spec has policy control. So if the RBAC problem is for the metadata setting, that is enough. We should clear the case of RBAC problem","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"78c1094ece0c1f7ee9996dfa040afdbc0c45491d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_32045fc6","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":63},"updated":"2018-02-16 15:56:12.000000000","message":"Is this hook needed to populate data from existing aggregates to placement like an online data migration? Would it create an unnecessary load to sync this data at every _from_db_obj call?\n\nIf it is not for data migration then why don\u0027t we hook into nova.objects.aggregate.Aggregate#save() instead? As far as I understand that is the only place when the member of an aggregate can be permanently changed. It seems to me that _from_db_object() is called not only from save().","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"43837217092d25fc9648341a60c9b72ff245aaa7","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_efc32dec","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":63},"in_reply_to":"3fa0c359_32045fc6","updated":"2018-02-20 17:41:32.000000000","message":"I\u0027m not sure _from_db_obj() is the right place to do this. That would mean every single load would hit placement, which is probably overkill, IMHO.\n\nI would expect save(), add_host(), etc to do these things.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eaee1e46c4c98f9a84d7b279358df480a68e9d5d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_d2b854c9","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":63},"in_reply_to":"3fa0c359_328bb868","updated":"2018-02-20 18:12:57.000000000","message":"Sure, but those are simple in-place tweaks, not \"load all the hosts and hammer this other http interface for a few minutes while we sync up\" :)","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fc1ee90d0bc6419ca81fd42d9747a103257fd1ae","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_fe2bde7e","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":63},"in_reply_to":"3fa0c359_d2b854c9","updated":"2018-03-12 22:01:10.000000000","message":"We already have an Aggregate API interface within the compute API where the operator adds members :\nhttps://github.com/openstack/nova/blob/8c7e9cc/nova/compute/api.py#L4958\n\nWhy should we be calling the Placement API from the Aggregate object and not within the Aggregate API directly (like we do here for calling the scheduler : https://github.com/openstack/nova/blob/8c7e9cc/nova/compute/api.py#L5001)","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69ef674f297c5d6905ffc6911998d7fb7e8925c1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_328bb868","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":63},"in_reply_to":"3fa0c359_efc32dec","updated":"2018-02-20 17:58:20.000000000","message":"_from_db_obj() is the only thing we can use for the online data migration for existing compute hosts, though, right? That\u0027s where we\u0027ve traditionally done the \"does this new field have a value? if not, set it and save it back to the DB\" type migrations...","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fae430ad957585b76c476cccecae71e2fb42ac72","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_7aa0bef4","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":63},"in_reply_to":"df7087c5_fe2bde7e","updated":"2018-03-16 15:07:26.000000000","message":"Good point. The more I looked at this, the more I realized Sylvain was right on the money. The Compute API is an ideal place to put the add_host/remove_host code, and I\u0027ve done that here:\n\nhttps://review.openstack.org/#/c/553597/\n\nI\u0027m updating this spec to reflect this change in implementation.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"6f8030800a41e06a7324c5686b30b966b32a552f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"},{"line_number":55,"context_line":"to the resource provider representing the host.  Likewise, on update or delete"},{"line_number":56,"context_line":"of the nova host aggregate or any change to the aggregate\u0027s membership, the"},{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_6a0dd23c","line":55,"range":{"start_line":53,"start_character":50,"end_line":55,"end_character":46},"updated":"2018-02-20 14:12:28.000000000","message":"*Just* for the host, or for all hosts in that agg? IOW, will this make sure that this host is mirrored in placement, or the entire aggregate?","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69ef674f297c5d6905ffc6911998d7fb7e8925c1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"},{"line_number":55,"context_line":"to the resource provider representing the host.  Likewise, on update or delete"},{"line_number":56,"context_line":"of the nova host aggregate or any change to the aggregate\u0027s membership, the"},{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_b2cd88b8","line":55,"range":{"start_line":53,"start_character":50,"end_line":55,"end_character":46},"in_reply_to":"3fa0c359_2f53553b","updated":"2018-02-20 17:58:20.000000000","message":"Unfortunately, _from_db_obj() is the place where the _members stuff is unpacked from the DB call that uses a SQLAlchemy ORM relationship to look up hosts for an aggregate. Unlike nova/objects/resource_provider.py where the calls to get membership and related objects is always done via a separate DB call and no ORM is used.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"43837217092d25fc9648341a60c9b72ff245aaa7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"},{"line_number":55,"context_line":"to the resource provider representing the host.  Likewise, on update or delete"},{"line_number":56,"context_line":"of the nova host aggregate or any change to the aggregate\u0027s membership, the"},{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_2f53553b","line":55,"range":{"start_line":53,"start_character":50,"end_line":55,"end_character":46},"in_reply_to":"3fa0c359_6a0dd23c","updated":"2018-02-20 17:41:32.000000000","message":"This is another reason not to do this in _from_db_obj, I think. If we\u0027re loading an aggregate (and not the potentially HUGE list of hosts), we don\u0027t have the information necessary to do the check, and if we did, it would be a very expensive check I think.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eaee1e46c4c98f9a84d7b279358df480a68e9d5d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"We propose to modify the ``nova.objects.Aggregate._from_db_obj`` method, when"},{"line_number":51,"context_line":"receiving the nova host aggregate **members** for the aggregate, to check with"},{"line_number":52,"context_line":"the placement API to determine if placement has a record of the host aggregate"},{"line_number":53,"context_line":"for each resource provider representing the host. If not, populate the"},{"line_number":54,"context_line":"placement service with a record for the association of the nova host aggregate"},{"line_number":55,"context_line":"to the resource provider representing the host.  Likewise, on update or delete"},{"line_number":56,"context_line":"of the nova host aggregate or any change to the aggregate\u0027s membership, the"},{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_b201086d","line":55,"range":{"start_line":53,"start_character":50,"end_line":55,"end_character":46},"in_reply_to":"3fa0c359_b2cd88b8","updated":"2018-02-20 18:12:57.000000000","message":"That only happens if the call that triggered the _from_db_obj() actually asked for them, otherwise you are triggering a SQLA lazy load, which is expensive.\n\nIf we do it in add_host() then we know which host in placement we need to touch. save() on an aggregate() is a better place to iterate over hosts if we have to to make changes to allocation_ratios, etc. Although thinking about that, we\u0027ll have to list potentially 10k hosts, and make that many calls to placement right? I mean, better to do that in save() than _from_db_obj(), but.. oof.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"43837217092d25fc9648341a60c9b72ff245aaa7","unresolved":false,"context_lines":[{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":60,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"},{"line_number":63,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_cf1af17b","line":60,"updated":"2018-02-20 17:41:32.000000000","message":"We probably need something more than just in the normal db migrations, because this can/will get out of sync over time as things drift. Thus, I expect we need a permanent new command that will check/fix aggregate associations, no?","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fc1ee90d0bc6419ca81fd42d9747a103257fd1ae","unresolved":false,"context_lines":[{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":60,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"},{"line_number":63,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_1e36d2e7","line":60,"in_reply_to":"3fa0c359_b242680e","updated":"2018-03-12 22:01:10.000000000","message":"Yean, +1 with Dan.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69ef674f297c5d6905ffc6911998d7fb7e8925c1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"placement service will be informed of the change."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"A new online data migration will be added to migrate existing host aggregate"},{"line_number":60,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Alternatives"},{"line_number":63,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_b242680e","line":60,"in_reply_to":"3fa0c359_cf1af17b","updated":"2018-02-20 17:58:20.000000000","message":"Likely yes, until such a time that Placement is the one source of truth for group membership of resource providers and the /os-aggregates Compute API is more of a proxy API to the placement API.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"78c1094ece0c1f7ee9996dfa040afdbc0c45491d","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"There will be a negative impact to data-changing operations for the"},{"line_number":98,"context_line":"``nova.objects.Aggregate`` if those methods will need to call out to the"},{"line_number":99,"context_line":"placement API as well."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Other deployer impact"},{"line_number":102,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_528ecb2e","line":99,"updated":"2018-02-16 15:56:12.000000000","message":"can we somehow mark the data migration complete after the initial sync to avoid repetitive sync cost in the future?","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69ef674f297c5d6905ffc6911998d7fb7e8925c1","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"There will be a negative impact to data-changing operations for the"},{"line_number":98,"context_line":"``nova.objects.Aggregate`` if those methods will need to call out to the"},{"line_number":99,"context_line":"placement API as well."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Other deployer impact"},{"line_number":102,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_d205b4c3","line":99,"in_reply_to":"3fa0c359_528ecb2e","updated":"2018-02-20 17:58:20.000000000","message":"I suppose we could add a new field in the Nova API aggregate_hosts table to indicate that the sync has happened.","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"78c1094ece0c1f7ee9996dfa040afdbc0c45491d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"Developer impact"},{"line_number":108,"context_line":"----------------"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"None."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Upgrade impact"},{"line_number":113,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_12e123ff","line":110,"updated":"2018-02-16 15:56:12.000000000","message":"Why don\u0027t we populate the placement with aggregate data during the upgrade?","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"69ef674f297c5d6905ffc6911998d7fb7e8925c1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"Developer impact"},{"line_number":108,"context_line":"----------------"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"None."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Upgrade impact"},{"line_number":113,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa0c359_52f9a4c5","line":110,"in_reply_to":"3fa0c359_12e123ff","updated":"2018-02-20 17:58:20.000000000","message":"That\u0027s basically what the online data migration command would do..","commit_id":"c9c5fffd68ed377b8b1babab3c985d26f5b99c10"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b34930487cb863406c1657ae009c52c8cb9dc297","unresolved":false,"context_lines":[{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the implementation of the Compute API to call to the"},{"line_number":51,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":52,"context_line":"added or removed from a nova host aggregate."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"df7087c5_29bc19ba","line":51,"range":{"start_line":51,"start_character":51,"end_line":51,"end_character":60},"updated":"2018-03-19 15:55:30.000000000","message":"there\u0027s a verb phrase missing here","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"66fac81e5d9ccd37bc00e6ed1d9a509927f5bf60","unresolved":false,"context_lines":[{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the implementation of the Compute API to call to the"},{"line_number":51,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":52,"context_line":"added or removed from a nova host aggregate."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"df7087c5_da537315","line":51,"range":{"start_line":51,"start_character":51,"end_line":51,"end_character":60},"in_reply_to":"df7087c5_29bc19ba","updated":"2018-03-22 22:29:23.000000000","message":"or remove \u0027to\u0027","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ee4fa107027ee04f7b26a1c174b32cc796b5acdc","unresolved":false,"context_lines":[{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"We propose to modify the implementation of the Compute API to call to the"},{"line_number":51,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":52,"context_line":"added or removed from a nova host aggregate."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_feccb962","line":51,"range":{"start_line":51,"start_character":51,"end_line":51,"end_character":60},"in_reply_to":"df7087c5_da537315","updated":"2018-03-23 17:19:46.000000000","message":"Done","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"11a4d67d2703cbf7c71d4004e1d3f548d97e8ffa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":52,"context_line":"added or removed from a nova host aggregate."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"},{"line_number":55,"context_line":"placement service to remove any resource provider to placement aggregate"},{"line_number":56,"context_line":"associations for the nova host aggregate in question."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":59,"context_line":"creation or update of a nova host aggregate, since the placement service does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_db7547ce","line":56,"range":{"start_line":54,"start_character":11,"end_line":56,"end_character":53},"updated":"2018-03-23 17:06:16.000000000","message":"Will only the RPs be removed from that placement aggregate association or will the whole placement aggregate record be deleted considering we no longer have that associated nova host aggregate?","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ee4fa107027ee04f7b26a1c174b32cc796b5acdc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":52,"context_line":"added or removed from a nova host aggregate."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"},{"line_number":55,"context_line":"placement service to remove any resource provider to placement aggregate"},{"line_number":56,"context_line":"associations for the nova host aggregate in question."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":59,"context_line":"creation or update of a nova host aggregate, since the placement service does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_bea88177","line":56,"range":{"start_line":54,"start_character":11,"end_line":56,"end_character":53},"in_reply_to":"bf659307_db7547ce","updated":"2018-03-23 17:19:46.000000000","message":"Yes, we\u0027d delete the placement_aggregates record as well. I\u0027ll add a note clarifying that.","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fcd83ffad9f55f0cc2cfbb5e11518c6a46acc3a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":59,"context_line":"creation or update of a nova host aggregate, since the placement service does"},{"line_number":60,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":61,"context_line":"provider is associated with it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":64,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_788e812f","line":61,"updated":"2018-03-23 16:15:46.000000000","message":"What if the corresponding Placement aggregate isn\u0027t created when we add a host to an aggregate, should we just catch the exeception and LOG something ?","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2c8c2b027552a3befada0e06a542ad540c6a3c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":59,"context_line":"creation or update of a nova host aggregate, since the placement service does"},{"line_number":60,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":61,"context_line":"provider is associated with it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":64,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_1b0dff8f","line":61,"in_reply_to":"bf659307_78668154","updated":"2018-03-23 16:45:36.000000000","message":"Yup.","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a2ba1ed623c513e5177637566942faca0500164c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":59,"context_line":"creation or update of a nova host aggregate, since the placement service does"},{"line_number":60,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":61,"context_line":"provider is associated with it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":64,"context_line":"records using the ``nova-manage`` background data migration tool."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_78668154","line":61,"in_reply_to":"bf659307_788e812f","updated":"2018-03-23 16:25:52.000000000","message":"you dont create aggregates explcitly in placement if i remember correctly. it just gets created implcitly when you add a resouce provider to an aggregate.","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fcd83ffad9f55f0cc2cfbb5e11518c6a46acc3a","unresolved":false,"context_lines":[{"line_number":61,"context_line":"provider is associated with it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":64,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_1898a568","line":64,"updated":"2018-03-23 16:15:46.000000000","message":"So I guess it would be up to the operators to make sure this script is run periodically if they want.","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a2ba1ed623c513e5177637566942faca0500164c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"provider is associated with it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":64,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_98e355a5","line":64,"in_reply_to":"bf659307_1898a568","updated":"2018-03-23 16:25:52.000000000","message":"well they would only need to do this once on upgrate right?\ntechnically they could even run it before the upgrade the new aggregates would just not be used for anything.","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2c8c2b027552a3befada0e06a542ad540c6a3c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"provider is associated with it."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":64,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_fb236b04","line":64,"in_reply_to":"bf659307_98e355a5","updated":"2018-03-23 16:45:36.000000000","message":"They would just run this to bootstrap placement aggregates from an existing nova deployment. They shouldn\u0027t need to run this periodically unless things get out of sync.","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8fcd83ffad9f55f0cc2cfbb5e11518c6a46acc3a","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"There will be a slight negative impact to the ``add_host`` and ``remove_host``"},{"line_number":104,"context_line":"operations for the Compute API since it will now need to communicate with the"},{"line_number":105,"context_line":"placement service."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Other deployer impact"},{"line_number":108,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bf659307_18b505ef","line":105,"updated":"2018-03-23 16:15:46.000000000","message":"Well, we call about API workers, y\u0027know (and the os-aggregates API is admin-only, so I guess performance is not a big thing)","commit_id":"21f976ab3e3d78df9c0d6a6a106172f1a8fcdf48"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6a20b9f63863279f8a04148ce445110236add46","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"---------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"None. Enables use cases described in the following blueprints:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_3ce02ecd","line":39,"updated":"2018-04-02 21:06:31.000000000","message":"This seems odd. An easy one is:\n\n As a deployer I want to be able to leverage placement aggregates for my normal host-aggregate groupings and thus I want nova to keep the changes I make mirrored to placement for me.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Use Cases"},{"line_number":37,"context_line":"---------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"None. Enables use cases described in the following blueprints:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":" * `Placement aggregate allocation ratios`_"},{"line_number":42,"context_line":" * `Placement filter requests`_"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e1a0b8f6","line":39,"in_reply_to":"bf659307_3ce02ecd","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6a20b9f63863279f8a04148ce445110236add46","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"},{"line_number":55,"context_line":"placement service to remove any resource provider to placement aggregate"},{"line_number":56,"context_line":"associations for the nova host aggregate in question, as well as remove the"},{"line_number":57,"context_line":"record in the ``placement_aggregates`` table for that aggregate."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":60,"context_line":"creation or update of a nova host aggregate, since the placement service does"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_7c4786bd","line":57,"updated":"2018-04-02 21:06:31.000000000","message":"Can you say something about the design for what happens if we fail to talk to placement? I assume we\u0027ll need to do the placement or db update, then the other, and be extra careful to rollback if the other fails to try to avoid getting the two out of sync with each other.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"},{"line_number":55,"context_line":"placement service to remove any resource provider to placement aggregate"},{"line_number":56,"context_line":"associations for the nova host aggregate in question, as well as remove the"},{"line_number":57,"context_line":"record in the ``placement_aggregates`` table for that aggregate."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":60,"context_line":"creation or update of a nova host aggregate, since the placement service does"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_a1cde0b7","line":57,"in_reply_to":"bf659307_7c4786bd","updated":"2018-04-03 17:38:50.000000000","message":"I will add some text here, but my thought is that if we fail to talk to placement, we log a warning but don\u0027t return an error to the user. The nova-manage command to sync aggregates can handle the reconciliation at a later time.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"record in the ``placement_aggregates`` table for that aggregate."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":60,"context_line":"creation or update of a nova host aggregate, since the placement service does"},{"line_number":61,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":62,"context_line":"provider is associated with it."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_66c9c976","line":60,"range":{"start_line":60,"start_character":9,"end_line":60,"end_character":43},"updated":"2018-03-26 21:18:25.000000000","message":"So what happens if nova automatically created a resource provider when I added a host to a nova host aggregate, and then I rename my nova host aggregate?\n\nhttps://developer.openstack.org/api-ref/compute/#update-aggregate\n\nIs nova going to rename the placement resource provider aggregate as well? Or create a new RP aggregate?\n\nNevermind, I guess there would be nothing to do in placement since aggregates there don\u0027t have a name:\n\nhttps://developer.openstack.org/api-ref/placement/#resource-provider-aggregates","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1ada1275c3a9228a51f7535be8e1bdc9a586d28","unresolved":false,"context_lines":[{"line_number":57,"context_line":"record in the ``placement_aggregates`` table for that aggregate."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":60,"context_line":"creation or update of a nova host aggregate, since the placement service does"},{"line_number":61,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":62,"context_line":"provider is associated with it."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_68a896da","line":60,"range":{"start_line":60,"start_character":9,"end_line":60,"end_character":43},"in_reply_to":"bf659307_66c9c976","updated":"2018-03-27 19:45:06.000000000","message":"\u003e So what happens if nova automatically created a resource provider\n \u003e when I added a host to a nova host aggregate, and then I rename my\n \u003e nova host aggregate?\n\nNothing at all. The aggregate\u0027s UUID is the only thing that matters.\n\n \u003e https://developer.openstack.org/api-ref/compute/#update-aggregate\n \u003e \n \u003e Is nova going to rename the placement resource provider aggregate\n \u003e as well? Or create a new RP aggregate?\n \u003e \n \u003e Nevermind, I guess there would be nothing to do in placement since\n \u003e aggregates there don\u0027t have a name:\n \u003e \n \u003e https://developer.openstack.org/api-ref/placement/#resource-provider-aggregates\n\nExactly.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"856db45db86d2fa474a525a8ed461643e3207263","unresolved":false,"context_lines":[{"line_number":57,"context_line":"record in the ``placement_aggregates`` table for that aggregate."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"We will *not* be communicating with the placement service for either the"},{"line_number":60,"context_line":"creation or update of a nova host aggregate, since the placement service does"},{"line_number":61,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":62,"context_line":"provider is associated with it."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_3d4bd02b","line":60,"range":{"start_line":60,"start_character":9,"end_line":60,"end_character":43},"in_reply_to":"bf659307_66c9c976","updated":"2018-03-27 09:14:11.000000000","message":"Right, renaming a nova aggregate isn\u0027t a problem since it\u0027s just metadata like others (even if that\u0027s a special one)","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6a20b9f63863279f8a04148ce445110236add46","unresolved":false,"context_lines":[{"line_number":61,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":62,"context_line":"provider is associated with it."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":65,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_3c090e95","line":64,"range":{"start_line":64,"start_character":43,"end_line":64,"end_character":50},"updated":"2018-04-02 21:06:31.000000000","message":"Migrate implies \"move\" to me. I would just say \"mirror\" or \"synchronize\"","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":61,"context_line":"not need to create a record for an aggregate until such time as a resource"},{"line_number":62,"context_line":"provider is associated with it."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"A new data migration tool will be added to migrate existing nova host aggregate"},{"line_number":65,"context_line":"records using the ``nova-manage`` background data migration tool."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_21b2304a","line":64,"range":{"start_line":64,"start_character":43,"end_line":64,"end_character":50},"in_reply_to":"bf659307_3c090e95","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Other deployer impact"},{"line_number":109,"context_line":"---------------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"None. We should try to \"auto-heal\" the placement aggregate records as much as"},{"line_number":112,"context_line":"possible without deployers needing to do anything."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Developer impact"},{"line_number":115,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_669ea964","line":112,"range":{"start_line":111,"start_character":0,"end_line":112,"end_character":50},"updated":"2018-03-26 21:18:25.000000000","message":"This is wrong. The nova-api service, until now, doesn\u0027t require configuration to talk to the placement service, for this to work, deployers will need to configure nova.conf for nova-api to talk to Placement.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"856db45db86d2fa474a525a8ed461643e3207263","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Other deployer impact"},{"line_number":109,"context_line":"---------------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"None. We should try to \"auto-heal\" the placement aggregate records as much as"},{"line_number":112,"context_line":"possible without deployers needing to do anything."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Developer impact"},{"line_number":115,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_fdb8f82a","line":112,"range":{"start_line":111,"start_character":0,"end_line":112,"end_character":50},"in_reply_to":"bf659307_669ea964","updated":"2018-03-27 09:14:11.000000000","message":"Shit, you\u0027re right.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Other deployer impact"},{"line_number":109,"context_line":"---------------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"None. We should try to \"auto-heal\" the placement aggregate records as much as"},{"line_number":112,"context_line":"possible without deployers needing to do anything."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Developer impact"},{"line_number":115,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_611fc807","line":112,"range":{"start_line":111,"start_character":0,"end_line":112,"end_character":50},"in_reply_to":"bf659307_fc339660","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d6a20b9f63863279f8a04148ce445110236add46","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Other deployer impact"},{"line_number":109,"context_line":"---------------------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"None. We should try to \"auto-heal\" the placement aggregate records as much as"},{"line_number":112,"context_line":"possible without deployers needing to do anything."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Developer impact"},{"line_number":115,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_fc339660","line":112,"range":{"start_line":111,"start_character":0,"end_line":112,"end_character":50},"in_reply_to":"bf659307_fdb8f82a","updated":"2018-04-02 21:06:31.000000000","message":"And, the deployers will have to run the synchronization routine initially, and any time things get out of sync.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":133,"context_line":"Work Items"},{"line_number":134,"context_line":"----------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Add methods to the scheduler reportclient for adding an aggregate association"},{"line_number":137,"context_line":"  to a resource provider **by name**, since the os-aggregates Compute API uses"},{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_26b8b1c6","line":139,"range":{"start_line":136,"start_character":2,"end_line":139,"end_character":8},"updated":"2018-03-26 21:18:25.000000000","message":"This is talking about the POST /os-aggregates/{aggregate_id}/action \"add host\" API right?\n\nGiven a compute host name, we should be able to get it\u0027s UUID:\n\nhttps://github.com/openstack/nova/blob/88f6c3b7b892f2a05066ac6f0e3353f4ce80f6b0/nova/compute/api.py#L4910\n\nWe can also lookup the host mapping by host name to figure out which cell the host is in, and from there query the compute_nodes table by hypervisor_hostname, like above.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1ada1275c3a9228a51f7535be8e1bdc9a586d28","unresolved":false,"context_lines":[{"line_number":133,"context_line":"Work Items"},{"line_number":134,"context_line":"----------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Add methods to the scheduler reportclient for adding an aggregate association"},{"line_number":137,"context_line":"  to a resource provider **by name**, since the os-aggregates Compute API uses"},{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_48359245","line":139,"range":{"start_line":136,"start_character":2,"end_line":139,"end_character":8},"in_reply_to":"bf659307_26b8b1c6","updated":"2018-03-27 19:45:06.000000000","message":"\u003e This is talking about the POST /os-aggregates/{aggregate_id}/action\n \u003e \"add host\" API right?\n \u003e \n \u003e Given a compute host name, we should be able to get it\u0027s UUID:\n \u003e \n \u003e https://github.com/openstack/nova/blob/88f6c3b7b892f2a05066ac6f0e3353f4ce80f6b0/nova/compute/api.py#L4910\n \u003e \n \u003e We can also lookup the host mapping by host name to figure out\n \u003e which cell the host is in, and from there query the compute_nodes\n \u003e table by hypervisor_hostname, like above.\n\nThe issue with this is that the Nova API concept of a \"host\" is actually not the compute node. It\u0027s the nova-compute service record (this is why Ironic can\u0027t work with nova host aggregates and why I proposed https://review.openstack.org/#/c/526753/).\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L5123\n\nSo, we can look up a record in the host_mappings table by the \"host name\" provided through the Compute API, but that table doesn\u0027t store compute node mappings. It stores the cell-to-service-record mappings.\n\nThis is why in the patch that implements this, I simply look up the resource provider by name in the placement service:\n\nhttps://review.openstack.org/#/c/553597/2/nova/scheduler/client/report.py@1779","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  to a resource provider **by name**, since the os-aggregates Compute API uses"},{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_26dd1114","line":140,"range":{"start_line":140,"start_character":32,"end_line":140,"end_character":48},"updated":"2018-03-26 21:18:25.000000000","message":"HostAPI.add_host_to_aggregate?\n\nhttps://github.com/openstack/nova/blob/88f6c3b7b892f2a05066ac6f0e3353f4ce80f6b0/nova/compute/api.py#L5111","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  to a resource provider **by name**, since the os-aggregates Compute API uses"},{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_e1a678c1","line":140,"range":{"start_line":140,"start_character":32,"end_line":140,"end_character":48},"in_reply_to":"bf659307_086d5a31","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1ada1275c3a9228a51f7535be8e1bdc9a586d28","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  to a resource provider **by name**, since the os-aggregates Compute API uses"},{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_086d5a31","line":140,"range":{"start_line":140,"start_character":32,"end_line":140,"end_character":48},"in_reply_to":"bf659307_26dd1114","updated":"2018-03-27 19:45:06.000000000","message":"No, it\u0027s actually AggregateAPI.add_host_to_aggregate():\n\nhttps://github.com/openstack/nova/blob/8c7e9cce7e9c37289d76e0ebdfd0f08ef3c1866c/nova/compute/api.py#L5111","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"},{"line_number":144,"context_line":"  syncing nova host aggregate information with placement"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_46e285d7","line":141,"range":{"start_line":141,"start_character":4,"end_line":141,"end_character":15},"updated":"2018-03-26 21:18:25.000000000","message":"remove_host_from_aggregate","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  a non-UUID host name parameter for identifying the nova-compute service"},{"line_number":139,"context_line":"  worker"},{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"},{"line_number":144,"context_line":"  syncing nova host aggregate information with placement"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_81a9bc90","line":141,"range":{"start_line":141,"start_character":4,"end_line":141,"end_character":15},"in_reply_to":"bf659307_46e285d7","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"},{"line_number":144,"context_line":"  syncing nova host aggregate information with placement"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_06ec8dc5","line":143,"range":{"start_line":143,"start_character":11,"end_line":143,"end_character":41},"updated":"2018-03-26 21:18:25.000000000","message":"Are you proposing an actual background thread/worker for this? Or just a CLI so that operators can run it \"in the background\"?","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"856db45db86d2fa474a525a8ed461643e3207263","unresolved":false,"context_lines":[{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"},{"line_number":144,"context_line":"  syncing nova host aggregate information with placement"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_7df3880b","line":143,"range":{"start_line":143,"start_character":11,"end_line":143,"end_character":41},"in_reply_to":"bf659307_06ec8dc5","updated":"2018-03-27 09:14:11.000000000","message":"I was thinking the latter.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1ada1275c3a9228a51f7535be8e1bdc9a586d28","unresolved":false,"context_lines":[{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"},{"line_number":144,"context_line":"  syncing nova host aggregate information with placement"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_28685e1f","line":143,"range":{"start_line":143,"start_character":11,"end_line":143,"end_character":41},"in_reply_to":"bf659307_06ec8dc5","updated":"2018-03-27 19:45:06.000000000","message":"just a CLI command. I will clarify.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":140,"context_line":"* Modify the ``nova.compute.api.HostAggregateAPI.add_host()`` and"},{"line_number":141,"context_line":"  ``remove_host()`` methods to call out to the reportclient to add or remove a"},{"line_number":142,"context_line":"  resource provider to aggregate association by provider name"},{"line_number":143,"context_line":"* Create a background data migration task in the ``nova-manage`` tool for"},{"line_number":144,"context_line":"  syncing nova host aggregate information with placement"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_c18c9437","line":143,"range":{"start_line":143,"start_character":11,"end_line":143,"end_character":41},"in_reply_to":"bf659307_28685e1f","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce1b28a4886c825207a3cd295f2796b81eea9d1a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Documentation Impact"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"A release note describing the mirroring process and inclusion of the"},{"line_number":160,"context_line":"background data migration task in ``nova-manage`` should be sufficient."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_267991fb","line":159,"updated":"2018-03-26 21:18:25.000000000","message":"We likely also have admin scheduling docs about host aggregates which should probably mention that nova host aggregates would be mirrored to the placement service, i.e.:\n\nhttps://docs.openstack.org/nova/latest/user/aggregates.html\n\nThe placement aggregates API reference also goes to great length to explain how placement aggregates aren\u0027t the same as nova host aggregates:\n\nhttps://developer.openstack.org/api-ref/placement/#resource-provider-aggregates\n\nBut we\u0027ll be mirroring them, so that API reference might need to be tweaked to say something about how nova automatically mirrors it\u0027s aggregates into placement.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fc58e56f03f62b1e5817056da14be2551e6ab526","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Documentation Impact"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"A release note describing the mirroring process and inclusion of the"},{"line_number":160,"context_line":"background data migration task in ``nova-manage`` should be sufficient."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_a1b3a0e8","line":159,"in_reply_to":"bf659307_267991fb","updated":"2018-04-03 17:38:50.000000000","message":"Done","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1ada1275c3a9228a51f7535be8e1bdc9a586d28","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Documentation Impact"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"A release note describing the mirroring process and inclusion of the"},{"line_number":160,"context_line":"background data migration task in ``nova-manage`` should be sufficient."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf659307_88f08a69","line":159,"in_reply_to":"bf659307_267991fb","updated":"2018-03-27 19:45:06.000000000","message":"Or I add some language saying that when a host is associated with a nova host aggregate, a record is created in placement of the association between the compute node resource provider matching that host name and the UUID of the nova host aggregate.","commit_id":"cda0c65250e9c89a9b3b8ca8a5c7405c3ba4af6c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"10b84ab757aef10a01a34528a1c94697d9af6df3","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"We propose to modify the implementation of the Compute API to call to the"},{"line_number":47,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":48,"context_line":"added or removed from a nova host aggregate."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_93658f20","line":47,"range":{"start_line":47,"start_character":51,"end_line":47,"end_character":54},"updated":"2018-04-03 18:45:16.000000000","message":"s/to //","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c53e07b7896f64ae954bbe7e6e041467beda17d8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"We propose to modify the implementation of the Compute API to call to the"},{"line_number":47,"context_line":"placement service (via the scheduler reportclient) to when a \"host\" member is"},{"line_number":48,"context_line":"added or removed from a nova host aggregate."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Similarly, when a nova host aggregate is deleted, there will be a call to the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_a1c15656","line":47,"range":{"start_line":47,"start_character":51,"end_line":47,"end_character":54},"in_reply_to":"bf659307_93658f20","updated":"2018-04-04 03:24:44.000000000","message":"Done","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"38c1750c0dc402b3a69a8f47dba5ccbd29b9d8d9","unresolved":false,"context_lines":[{"line_number":63,"context_line":".. note::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    If there is a failure in nova-api communicating with the placement service,"},{"line_number":66,"context_line":"    we will log a warning but not return an error to the end user. The"},{"line_number":67,"context_line":"    nova-manage command will allow reconciling aggregate information at a later"},{"line_number":68,"context_line":"    time."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_739a3b62","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":65},"updated":"2018-04-03 18:25:01.000000000","message":"Ye gods, why?  Is the nova-manage command asynchronous?  This is surely an error.  \"You asked me to do a thing and I didn\u0027t do that thing.\"","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"847d85d148a07e0278c4f23848a88988948b9420","unresolved":false,"context_lines":[{"line_number":63,"context_line":".. note::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    If there is a failure in nova-api communicating with the placement service,"},{"line_number":66,"context_line":"    we will log a warning but not return an error to the end user. The"},{"line_number":67,"context_line":"    nova-manage command will allow reconciling aggregate information at a later"},{"line_number":68,"context_line":"    time."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_a5cff7ae","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":65},"in_reply_to":"bf659307_0fa38001","updated":"2018-04-05 16:43:03.000000000","message":"Because their operation succeeded. What this solution is proposing is an implementation detail.\n\nImagine a user calling add-host to an aggregate and getting back an error about placement being down. They wouldn\u0027t know what that was about.","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c53e07b7896f64ae954bbe7e6e041467beda17d8","unresolved":false,"context_lines":[{"line_number":63,"context_line":".. note::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    If there is a failure in nova-api communicating with the placement service,"},{"line_number":66,"context_line":"    we will log a warning but not return an error to the end user. The"},{"line_number":67,"context_line":"    nova-manage command will allow reconciling aggregate information at a later"},{"line_number":68,"context_line":"    time."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_81be92d2","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":65},"in_reply_to":"bf659307_739a3b62","updated":"2018-04-04 03:24:44.000000000","message":"This is not about nova-manage. This is about nova-api communicating with placement.","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"414ade10aa5f3a1b2a768063cff029b1deda8128","unresolved":false,"context_lines":[{"line_number":63,"context_line":".. note::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    If there is a failure in nova-api communicating with the placement service,"},{"line_number":66,"context_line":"    we will log a warning but not return an error to the end user. The"},{"line_number":67,"context_line":"    nova-manage command will allow reconciling aggregate information at a later"},{"line_number":68,"context_line":"    time."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_0fa38001","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":65},"in_reply_to":"bf659307_81be92d2","updated":"2018-04-04 14:06:56.000000000","message":"Okay, but even so - why wouldn\u0027t this bubble up an error to the caller of the API?","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8c32d1c1e246320a192cc9cf2ee82115126a5ccd","unresolved":false,"context_lines":[{"line_number":63,"context_line":".. note::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    If there is a failure in nova-api communicating with the placement service,"},{"line_number":66,"context_line":"    we will log a warning but not return an error to the end user. The"},{"line_number":67,"context_line":"    nova-manage command will allow reconciling aggregate information at a later"},{"line_number":68,"context_line":"    time."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_6011bb53","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":65},"in_reply_to":"bf659307_a5cff7ae","updated":"2018-04-06 13:49:09.000000000","message":"\u003e Because their operation succeeded.\n\nThe host aggregate part succeeded, but the placement aggregate part didn\u0027t, right?  I guess depending on the effects of that, it could be considered a success or a failure; and you\u0027re stating that it\u0027s a success.\n\nI don\u0027t have a sense of the downstream ramifications, so I have to assume you\u0027ve thought those through to make this call.","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"10b84ab757aef10a01a34528a1c94697d9af6df3","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Normal functional migration tests."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_53129763","line":161,"updated":"2018-04-03 18:45:16.000000000","message":"I got confused here as I initially thought this meant \"database migration\" but there aren\u0027t any. And then I thought \"functional tests of instance migration\" but wondered how that was germane, so maybe this is just \"Normal functional tests\" but are they normal if we\u0027re going to be confirming the changes on the placement side too.\n\nDunno. I trust that the tests in the implementation will be just fine, so I\u0027m not really asking for a change here, just wondering if there was a point being made that I\u0027ve missed.","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c53e07b7896f64ae954bbe7e6e041467beda17d8","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Normal functional migration tests."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_21cd4684","line":161,"in_reply_to":"bf659307_53129763","updated":"2018-04-04 03:24:44.000000000","message":"I will clarify. I meant \"normal functional tests of the new nova-manage command\"","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"38c1750c0dc402b3a69a8f47dba5ccbd29b9d8d9","unresolved":false,"context_lines":[{"line_number":166,"context_line":"A release note describing the mirroring process, requirement of the nova-api\u0027s"},{"line_number":167,"context_line":"nova.conf to contain placement credentials and inclusion of the"},{"line_number":168,"context_line":"``sync_placement_aggregates`` command in ``nova-manage`` should be done. In"},{"line_number":169,"context_line":"addition, the placement API reference should be updated to describe how the"},{"line_number":170,"context_line":"nova host aggregates are mirrored to placement."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_33f7e38d","line":169,"range":{"start_line":169,"start_character":10,"end_line":169,"end_character":37},"updated":"2018-04-03 18:25:01.000000000","message":"You must be talking about this [1], which is a nova doc; as opposed to the placement API reference [2], which has nothing to do with Nova.  If you respin, please clarify.\n\n[1] https://docs.openstack.org/nova/latest/user/placement.html\n[2] https://developer.openstack.org/api-ref/placement/","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c53e07b7896f64ae954bbe7e6e041467beda17d8","unresolved":false,"context_lines":[{"line_number":166,"context_line":"A release note describing the mirroring process, requirement of the nova-api\u0027s"},{"line_number":167,"context_line":"nova.conf to contain placement credentials and inclusion of the"},{"line_number":168,"context_line":"``sync_placement_aggregates`` command in ``nova-manage`` should be done. In"},{"line_number":169,"context_line":"addition, the placement API reference should be updated to describe how the"},{"line_number":170,"context_line":"nova host aggregates are mirrored to placement."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_e1c2ee52","line":169,"range":{"start_line":169,"start_character":10,"end_line":169,"end_character":37},"in_reply_to":"bf659307_33f7e38d","updated":"2018-04-04 03:24:44.000000000","message":"Done. I\u0027m referring to this: https://developer.openstack.org/api-ref/placement/#resource-provider-aggregates which is what mriedem brought up on a prior review.","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"414ade10aa5f3a1b2a768063cff029b1deda8128","unresolved":false,"context_lines":[{"line_number":166,"context_line":"A release note describing the mirroring process, requirement of the nova-api\u0027s"},{"line_number":167,"context_line":"nova.conf to contain placement credentials and inclusion of the"},{"line_number":168,"context_line":"``sync_placement_aggregates`` command in ``nova-manage`` should be done. In"},{"line_number":169,"context_line":"addition, the placement API reference should be updated to describe how the"},{"line_number":170,"context_line":"nova host aggregates are mirrored to placement."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bf659307_af4134a8","line":169,"range":{"start_line":169,"start_character":10,"end_line":169,"end_character":37},"in_reply_to":"bf659307_e1c2ee52","updated":"2018-04-04 14:06:56.000000000","message":"Oh, eek, I just went back and looked more closely at that.  We sure do spend a lot of space talking about Nova in the Placement API reference.  I guess this isn\u0027t the place to talk about it (bp placement-extract would be) but we eventually may wish to remove (or at least generalize) mentions of specific projects from that reference.","commit_id":"6a06ee2457031db559698fbd1f71a9b5ec5c1e0d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"ad278c8e723187e1f22726430b96e2cb9e746f22","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. _replace: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_170932dc","line":32,"updated":"2018-04-05 21:55:55.000000000","message":"Just curious, thinking to the future when all of the replaceable aggregate-based filters are gone, will nova host aggregates still serve any purpose? It\u0027d be nice to have a few sentences view of what the world looks like after placement is handling all of the filtering that it can.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd327b891199fa442060f4f188f3e15e4fab27c0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. _replace: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_833ae4ca","line":32,"in_reply_to":"bf659307_170932dc","updated":"2018-04-06 02:01:54.000000000","message":"There are still differences: placement aggregates don\u0027t have metadata (or traits), they are just groupings of resource providers. We still rely on filtering images and flavors to specific aggregates based on matching metadata. Also, nova\u0027s AZ concept is implemented via host aggregates, based on metadata, so it wouldn\u0027t be something that placement aggregates would replace.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"10c9f89fbfb60619303fbd7b47bed319bbc22eb9","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. _replace: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_4f9aa3c5","line":32,"in_reply_to":"bf659307_2f0def36","updated":"2018-04-06 16:39:12.000000000","message":"Gotcha, thanks for the responses. So the mirroring would aid us in scheduling situations where the question is: \"does host belong to aggregate?\" but not any of the other metadata key matching situations.\n\nIt looks like I\u0027m in the minority of that not being very obvious already, so no need to add words about it on my account.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4b208d28adc8b79839571abf17513c7be59a5924","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. _replace: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_1a82a750","line":32,"in_reply_to":"bf659307_4f9aa3c5","updated":"2018-04-06 17:24:27.000000000","message":"\u003e Gotcha, thanks for the responses. So the mirroring would aid us in\n \u003e scheduling situations where the question is: \"does host belong to\n \u003e aggregate?\" but not any of the other metadata key matching\n \u003e situations.\n\nWell, the mirroring just allows the placement request filtering to work properly (otherwise obviously there would be no grouping information sync\u0027d from nova to placement and therefore placement wouldn\u0027t be able to filter resource providers by group membership.)\n\nThe placement request filtering basically looks up the nova host aggregate UUID by looking for some aggregate metadata in the Nova API DB. It then uses a member_of:\u003cAGG_UUID\u003e filter against the placement API to filter resource providers appropriately. If there\u0027s no aggregate information sync\u0027d over to placement about nova host aggregates, then those types of queries will not be possible.\n\nDoing the sync\u0027ing in this way isn\u0027t strictly *necessary*, as both Matt and Alex pointed out. The operator *could* manually associate resource provider records for compute nodes to aggregate UUIDs by directly calling the placement API.\n\nHowever, as I mentioned in previous reviews, my long-term vision is to have placement (and not nova) own the provider grouping information and stop having nova host aggregates be a thing -- instead, just use placement for grouping of providers.\n\nSo, this spec is merely a stepping stone on the way to achieving that end goal.\n\n \u003e It looks like I\u0027m in the minority of that not being very obvious\n \u003e already, so no need to add words about it on my account.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f131d12292b1c12bf9be757d4d70fc9765b7e0b5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that nova host aggregates that tie collections of ``nova-compute`` service"},{"line_number":30,"context_line":"workers together are represented in the placement API as **placement"},{"line_number":31,"context_line":"aggregates** and associated with the **resource provider** records that"},{"line_number":32,"context_line":"correspond to the compute node that the ``nova-compute`` service manages."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":".. _replace: https://blueprints.launchpad.net/nova/+spec/alloc-candidates-member-of"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_2f0def36","line":32,"in_reply_to":"bf659307_833ae4ca","updated":"2018-04-06 16:34:54.000000000","message":"Nova\u0027s concept of an availability zone could absolutely be implemented as a placement aggregate. After all, an availability zone is nothing more than a grouping of compute resource providers.\n\nThat said, what Matt says is 100% correct about placement aggregates not having metadata associated with them (only resource providers have metadata associated with them, and that metadata is only trait strings, not free-form key-value pairs like nova host aggregate metadata).\n\nMelanie, would you like me to add some text here about this topic?","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28301d7514d15616d6d7f6c1732225bbe365fef5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"api layer."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"We could have had an external agent do the mirroring/syncing behaviour."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Data model impact"},{"line_number":80,"context_line":"-----------------"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_46726caf","line":78,"updated":"2018-04-09 14:03:08.000000000","message":"Alternative to the nova-manage sync CLI, we could have used a periodic task in the nova-scheduler service to do the sync for us, which would allow disabling it if you don\u0027t want to sync periodically, or adjust the frequency of the sync (1 minute, 10, 60?).\n\nAnyway, we could always add in a periodic task later if people wanted one.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28301d7514d15616d6d7f6c1732225bbe365fef5","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"None."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"REST API impact"},{"line_number":85,"context_line":"---------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"None."}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_5bba456e","line":84,"updated":"2018-04-09 14:03:08.000000000","message":"nit: I\u0027m not sure if it\u0027s worth mentioning explicitly that there will be no new microversion change for this new behavior. I don\u0027t think there needs to be, you\u0027re either using the code that\u0027s new enough to do the sync or you don\u0027t, and since it\u0027s an admin-only API by default, discoverability is less of an issue, and just having something in the release notes is probably sufficient (and an accompanying mention in the API reference that starting in Rocky the aggregates are mirrored in the Placement service).","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28301d7514d15616d6d7f6c1732225bbe365fef5","unresolved":false,"context_lines":[{"line_number":115,"context_line":"service authentication credentials in order for the nova-api service to"},{"line_number":116,"context_line":"communicate with placement."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"In addition, the operator will want to run the ``nova-manage"},{"line_number":119,"context_line":"sync_placement_aggregates`` command periodically to ensure nova and placement"},{"line_number":120,"context_line":"have reconciled views of aggregate information."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Developer impact"},{"line_number":123,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_6683f057","line":120,"range":{"start_line":118,"start_character":0,"end_line":120,"end_character":47},"updated":"2018-04-09 14:03:08.000000000","message":"If we expect the operator to need to run this periodically anyway, I\u0027d think a periodic task in the scheduler service would be best, but I\u0027m not firm on requiring a periodic task.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a05fb96b5c735f6ce7602b29f28fa38493c4764c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"service authentication credentials in order for the nova-api service to"},{"line_number":116,"context_line":"communicate with placement."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"In addition, the operator will want to run the ``nova-manage"},{"line_number":119,"context_line":"sync_placement_aggregates`` command periodically to ensure nova and placement"},{"line_number":120,"context_line":"have reconciled views of aggregate information."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Developer impact"},{"line_number":123,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_2fe148fd","line":120,"range":{"start_line":118,"start_character":0,"end_line":120,"end_character":47},"in_reply_to":"bf659307_6683f057","updated":"2018-04-09 17:07:25.000000000","message":"Well, we\u0027d probably expect the operator to run this quite infrequently, and potentially co-scheduled with maintenance or periods of low activity. That wouldn\u0027t be well-suited for a periodic task in one of our services. The discover_hosts periodic is really to make things appear to happen automatically at runtime, so it\u0027s a bit of a different case.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c33ab4673b40d3b1d3413a92f88f1f7112ce3a41","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Upgrade impact"},{"line_number":128,"context_line":"--------------"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"None."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Implementation"},{"line_number":133,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_e672a07c","line":130,"updated":"2018-04-09 14:04:07.000000000","message":"There is a clear upgrade impact based on the deployer impact section. How do you feel about making nova-api graceful about placement not being configured in Rocky, but a hard failure in Stein? I was thinking about this because we can\u0027t really add a nova-status check for the nova-api configuration for this.","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a05fb96b5c735f6ce7602b29f28fa38493c4764c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Upgrade impact"},{"line_number":128,"context_line":"--------------"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"None."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Implementation"},{"line_number":133,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf659307_afbeb8d1","line":130,"in_reply_to":"bf659307_e672a07c","updated":"2018-04-09 17:07:25.000000000","message":"If we really need to, then I guess that\u0027s what we\u0027ll have to do, although I\u0027d like to make sure we get to the point where we\u0027re consistent at API return time with \"set in both places or set in neither place.\"","commit_id":"cd730182fb2772ab8396e4488bb597ce8f299de0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"86c0e5d87b0559e185a24b56999a8c2d758e2f81","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"We could have had an external agent do the mirroring/syncing behaviour."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"We could use a periodic task in the nova-api service instead of a nova-manage"},{"line_number":80,"context_line":"command."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bf659307_265bb887","line":79,"range":{"start_line":79,"start_character":41,"end_line":79,"end_character":44},"updated":"2018-04-09 14:20:04.000000000","message":"nova-scheduler (which already has periodic tasks, but nova-api doesn\u0027t)","commit_id":"5c2ad01bcfe05e55cad954fcfa896dc479e4369b"}]}
