)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"53c35d0267270df9d99ab269e88c46ff6e3ccce8","unresolved":false,"context_lines":[{"line_number":762,"context_line":"    def _complete_deletion(self, context, instance):"},{"line_number":763,"context_line":"        self._update_resource_tracker(context, instance)"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        rt \u003d self._get_resource_tracker()"},{"line_number":766,"context_line":"        rt.reportclient.delete_allocation_for_instance(context, instance.uuid)"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        self._clean_instance_console_tokens(context, instance)"},{"line_number":769,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_0cee36fd","side":"PARENT","line":766,"range":{"start_line":765,"start_character":1,"end_line":766,"end_character":78},"updated":"2018-11-28 17:25:12.000000000","message":"Why couldn\u0027t this just use self.reportclient to begin with?","commit_id":"27b7bad88b531e0869f8e9af9ab951b921c37634"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9064d9cc63cfcab556fef96a9540d6fbb78a20c3","unresolved":false,"context_lines":[{"line_number":762,"context_line":"    def _complete_deletion(self, context, instance):"},{"line_number":763,"context_line":"        self._update_resource_tracker(context, instance)"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        rt \u003d self._get_resource_tracker()"},{"line_number":766,"context_line":"        rt.reportclient.delete_allocation_for_instance(context, instance.uuid)"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        self._clean_instance_console_tokens(context, instance)"},{"line_number":769,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_182bcce8","side":"PARENT","line":766,"range":{"start_line":765,"start_character":1,"end_line":766,"end_character":78},"in_reply_to":"3f79a3b5_0cee36fd","updated":"2018-11-28 21:23:20.000000000","message":"Presumably to ensure we\u0027re getting a fresh report client in case we whacked the resource tracker [1].\n\nBut also presumably, it\u0027s only important for us to do that in cases where we\u0027re relying on the report client\u0027s cache, which this shouldn\u0027t be doing since we don\u0027t cache consumer or allocation data.\n\n[Later] As it turns out, this code predates the introduction of self.reportclient [2], and Dan didn\u0027t go through and switch out all the references.\n\nIn any case, part of this change is consolidating all references to reportclient to use the *same* reportclient. As you can see, previously there were at least two: one through the scheduler client and one through the resource tracker.\n\n[1] https://review.openstack.org/#/c/617042/6/nova/compute/manager.py@7695\n[2] https://review.openstack.org/#/c/498947/","commit_id":"27b7bad88b531e0869f8e9af9ab951b921c37634"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"53c35d0267270df9d99ab269e88c46ff6e3ccce8","unresolved":false,"context_lines":[{"line_number":509,"context_line":"            openstack_driver.is_neutron_security_groups())"},{"line_number":510,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":511,"context_line":"        self.scheduler_client \u003d scheduler_client.SchedulerClient()"},{"line_number":512,"context_line":"        self._reportclient \u003d None"},{"line_number":513,"context_line":"        self._resource_tracker \u003d None"},{"line_number":514,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":515,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_4caf4e9b","line":512,"range":{"start_line":512,"start_character":8,"end_line":512,"end_character":33},"updated":"2018-11-28 17:25:12.000000000","message":"this change seems unnecessary to me (both the attribute renaming and the addition of the @property). Any reason we can\u0027t just do:\n\n self.reportclient \u003d report.SchedulerReportClient()","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9064d9cc63cfcab556fef96a9540d6fbb78a20c3","unresolved":false,"context_lines":[{"line_number":509,"context_line":"            openstack_driver.is_neutron_security_groups())"},{"line_number":510,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":511,"context_line":"        self.scheduler_client \u003d scheduler_client.SchedulerClient()"},{"line_number":512,"context_line":"        self._reportclient \u003d None"},{"line_number":513,"context_line":"        self._resource_tracker \u003d None"},{"line_number":514,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":515,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_38f9e87f","line":512,"range":{"start_line":512,"start_character":8,"end_line":512,"end_character":33},"in_reply_to":"3f79a3b5_4caf4e9b","updated":"2018-11-28 21:23:20.000000000","message":"see below","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"53c35d0267270df9d99ab269e88c46ff6e3ccce8","unresolved":false,"context_lines":[{"line_number":556,"context_line":"            self._resource_tracker \u003d rt"},{"line_number":557,"context_line":"        return self._resource_tracker"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    @property"},{"line_number":560,"context_line":"    def reportclient(self):"},{"line_number":561,"context_line":"        if not self._reportclient:"},{"line_number":562,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":563,"context_line":"        return self._reportclient"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":566,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_8c0246b8","line":563,"range":{"start_line":559,"start_character":0,"end_line":563,"end_character":33},"updated":"2018-11-28 17:25:12.000000000","message":"why was this needed?","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9064d9cc63cfcab556fef96a9540d6fbb78a20c3","unresolved":false,"context_lines":[{"line_number":556,"context_line":"            self._resource_tracker \u003d rt"},{"line_number":557,"context_line":"        return self._resource_tracker"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    @property"},{"line_number":560,"context_line":"    def reportclient(self):"},{"line_number":561,"context_line":"        if not self._reportclient:"},{"line_number":562,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":563,"context_line":"        return self._reportclient"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":566,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_58006469","line":563,"range":{"start_line":559,"start_character":0,"end_line":563,"end_character":33},"in_reply_to":"3f79a3b5_8c0246b8","updated":"2018-11-28 21:23:20.000000000","message":"I was following the pattern of _get_resource_tracker(), which seems to exist so we can throw away the resource tracker\u0027s accumulated info and rebuild it in certain conditions (see L7695). Surely the report client\u0027s provider tree cache is an important part of what we would want to throw away and rebuild in such cases.\n\nIt\u0027s possible we don\u0027t need to do that anymore, but making that additional change to the logic seemed more risky and something we should fix separately.","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9064d9cc63cfcab556fef96a9540d6fbb78a20c3","unresolved":false,"context_lines":[{"line_number":7692,"context_line":"            # until Ironic baremetal node resource providers are tracked"},{"line_number":7693,"context_line":"            # properly in the report client and this is a tiny edge case"},{"line_number":7694,"context_line":"            # anyway."},{"line_number":7695,"context_line":"            self._resource_tracker \u003d None"},{"line_number":7696,"context_line":"            return"},{"line_number":7697,"context_line":"        except exception.ReshapeFailed:"},{"line_number":7698,"context_line":"            # We\u0027re only supposed to get here on startup, if a reshape was"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b8b658d4","line":7695,"range":{"start_line":7695,"start_character":0,"end_line":7695,"end_character":41},"updated":"2018-11-28 21:23:20.000000000","message":"here","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"980041137f82deab9ca9576ed77ca28a71720640","unresolved":false,"context_lines":[{"line_number":7692,"context_line":"            # until Ironic baremetal node resource providers are tracked"},{"line_number":7693,"context_line":"            # properly in the report client and this is a tiny edge case"},{"line_number":7694,"context_line":"            # anyway."},{"line_number":7695,"context_line":"            self._resource_tracker \u003d None"},{"line_number":7696,"context_line":"            return"},{"line_number":7697,"context_line":"        except exception.ReshapeFailed:"},{"line_number":7698,"context_line":"            # We\u0027re only supposed to get here on startup, if a reshape was"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d30c553b","line":7695,"range":{"start_line":7695,"start_character":0,"end_line":7695,"end_character":41},"in_reply_to":"3f79a3b5_b8b658d4","updated":"2018-11-28 21:35:00.000000000","message":"LOL. Code comes back to bite... :)\n\nThis can be removed now I\u0027m pretty sure. It was from back before we were tracking multiple compute node objects in the resource tracker.","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e37a40ea27723cdcece61066e8812113a9bc227f","unresolved":false,"context_lines":[{"line_number":7692,"context_line":"            # until Ironic baremetal node resource providers are tracked"},{"line_number":7693,"context_line":"            # properly in the report client and this is a tiny edge case"},{"line_number":7694,"context_line":"            # anyway."},{"line_number":7695,"context_line":"            self._resource_tracker \u003d None"},{"line_number":7696,"context_line":"            return"},{"line_number":7697,"context_line":"        except exception.ReshapeFailed:"},{"line_number":7698,"context_line":"            # We\u0027re only supposed to get here on startup, if a reshape was"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_738c612c","line":7695,"range":{"start_line":7695,"start_character":0,"end_line":7695,"end_character":41},"in_reply_to":"3f79a3b5_d30c553b","updated":"2018-11-28 22:06:21.000000000","message":"https://review.openstack.org/620711","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"28819925f5dec897428b4dde01a58b3bb4615c5a","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"bfdaf3ff_f9f7b2f4","line":558,"updated":"2019-01-14 18:01:55.000000000","message":"not entirely sure why this is here... perhaps to prevent multiple copies of the reportclient\u0027s ProviderTree cache from being created?\n\nIf so, probably fine to just do this:\n\n @property\n def reportclient(self):\n     return self._get_resource_tracker().reportclient\n\nand not have the self._reportclient variable at all...\n\nit\u0027s literally just a pointer redirection anyway.\n\nAlternately, you could create the SchedulerReportClient() as an attribute of the compute manager and pass it as an arg to the ResourceTracker() constructor...","commit_id":"ae26aaacb12e2ccfca1ef0777441f3faab02d433"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"62d05a1e3f97a419e86ce8d51b53757dfd00305b","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"bfdaf3ff_c102dbb4","line":558,"in_reply_to":"bfdaf3ff_09a56f04","updated":"2019-01-15 19:51:20.000000000","message":"Definitely wanted singleton behavior to, as you say, avoid multiple ProviderTree caches. You\u0027re probably correct that I could have omitted the _reportclient member, though doing it this way is slightly more efficient (saves a stack frame in the general case). Anyway, this goes away in a couple of patches [1].\n\n[1] https://review.openstack.org/#/c/620711/13/nova/compute/manager.py","commit_id":"ae26aaacb12e2ccfca1ef0777441f3faab02d433"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"35d486dcd07a00eb8c76c21ba1aaac06f483fb32","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"bfdaf3ff_09a56f04","line":558,"in_reply_to":"bfdaf3ff_f9f7b2f4","updated":"2019-01-15 17:36:40.000000000","message":"If we were to do this all again, it could probably make sense to make the report client a stateless tool that has methods for calling placement. Instead of it carrying a provider tree, it would get passed one as required. (I recognize it\u0027s not quite that simple)\n\nAs things are, passing the report client in, when creating the ResourceTracker makes quite a bit of sense.\n\nAs Jay points out the self._reportclient guard put in here is redundant.","commit_id":"ae26aaacb12e2ccfca1ef0777441f3faab02d433"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9d90a9305fe81b277d72839598f07a48636f725f","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_956b0484","line":558,"updated":"2019-02-04 14:29:14.000000000","message":"OK, so you\u0027re making the ReportClient be instanciated by the ResourceTracker. That makes us having N objects instead of one. Any reason for it besides the refactoring purpose ?\n\nOf course, given it\u0027s now a getter, we can easily drop the RT transitive relationship and instantiate whatever we want later. I guess it\u0027s what you want ? /me needs to check other patches in the series.","commit_id":"86e94a11f7966578fd2c3f56eaf9db340535cdf7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77746f3fc02bee2231ef01a3afb992665731a39f","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_7598e01a","line":558,"in_reply_to":"9fdfeff1_15cf142a","updated":"2019-02-04 14:39:39.000000000","message":"\u003e The patches later in the series a) get rid of this, and b) make\n \u003e sure the report client is a singleton.\n\ns/report client/resource tracker/ but:\nhttps://review.openstack.org/#/c/620711/18/nova/compute/manager.py\n\n \u003e I still don\u0027t get why we need to\n \u003e infer the ReportClient from the ResourceTracker, but that\u0027s a nit\n \u003e that we can fix up later if people agree.\n\nWell, the RT needs a report client for its own purposes, so we can\u0027t get rid of that one. And if we had a separate one here, we would potentially have the aforementioned cache sync problems.\n\nI could see doing some refactoring to make the report client a global singleton so we could \"instantiate\" it here rather than pulling it out of the RT, but the effect would be the same.","commit_id":"86e94a11f7966578fd2c3f56eaf9db340535cdf7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dab17d9c9c030bde389a9d2c4ac0abd38b245145","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_15cf142a","line":558,"in_reply_to":"9fdfeff1_3586d8dd","updated":"2019-02-04 14:35:56.000000000","message":"Okay, thanks for the replies, I still don\u0027t get why we need to infer the ReportClient from the ResourceTracker, but that\u0027s a nit that we can fix up later if people agree.","commit_id":"86e94a11f7966578fd2c3f56eaf9db340535cdf7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"eef81eadf41a41d02737c8952847c5e80159e8fc","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_f539303f","line":558,"in_reply_to":"9fdfeff1_956b0484","updated":"2019-02-04 14:31:32.000000000","message":"Yeah, I think Jay commented on this same thing in an earlier PS. The patches later in the series a) get rid of this, and b) make sure the report client is a singleton.\n\nEven here, though, I\u0027m pretty sure we only have one resource tracker, so only one report client. That turns out to be important, because otherwise the caches would be out of sync with each other and we\u0027d end up with a bunch of unnecessary retries.","commit_id":"86e94a11f7966578fd2c3f56eaf9db340535cdf7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6da8cc928b240e036974fc089861d666d3b55850","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_f5505061","line":558,"in_reply_to":"9fdfeff1_f539303f","updated":"2019-02-04 14:35:15.000000000","message":"\u003e Yeah, I think Jay commented on this same thing in an earlier PS.\n\nhttps://review.openstack.org/#/c/617042/14/nova/compute/manager.py@558","commit_id":"86e94a11f7966578fd2c3f56eaf9db340535cdf7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d5a2c6b541da22886abd21bf199fe6074395bed4","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    def reportclient(self):"},{"line_number":556,"context_line":"        if not self._reportclient:"},{"line_number":557,"context_line":"            self._reportclient \u003d self._get_resource_tracker().reportclient"},{"line_number":558,"context_line":"        return self._reportclient"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _update_resource_tracker(self, context, instance):"},{"line_number":561,"context_line":"        \"\"\"Let the resource tracker know that an instance has changed state.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_3586d8dd","line":558,"in_reply_to":"9fdfeff1_f539303f","updated":"2019-02-04 14:33:05.000000000","message":"Correct, N is 1 in this case, because in Ocata Jay refactored the ComputeManager / ResourceTracker relationship so they were 1:1 rather than 1:N where N was the number of compute nodes reported by the driver (so many in the case of ironic). The ResourceTracker has a dict of the ComputeNode objects it manages now.","commit_id":"86e94a11f7966578fd2c3f56eaf9db340535cdf7"}],"nova/scheduler/client/__init__.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"53c35d0267270df9d99ab269e88c46ff6e3ccce8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def __init__(self):"},{"line_number":23,"context_line":"        self.queryclient \u003d query.SchedulerQueryClient()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def select_destinations(self, context, spec_obj, instance_uuids,"},{"line_number":26,"context_line":"            return_objects\u003dFalse, return_alternates\u003dFalse):"},{"line_number":27,"context_line":"        return self.queryclient.select_destinations(context, spec_obj,"},{"line_number":28,"context_line":"                instance_uuids, return_objects, return_alternates)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def update_aggregates(self, context, aggregates):"},{"line_number":31,"context_line":"        self.queryclient.update_aggregates(context, aggregates)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_2cd3f237","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":66},"updated":"2018-11-28 17:25:12.000000000","message":"Is this even used any more? I think probably not... anyway, something to cut in a future patch.","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9064d9cc63cfcab556fef96a9540d6fbb78a20c3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def __init__(self):"},{"line_number":23,"context_line":"        self.queryclient \u003d query.SchedulerQueryClient()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def select_destinations(self, context, spec_obj, instance_uuids,"},{"line_number":26,"context_line":"            return_objects\u003dFalse, return_alternates\u003dFalse):"},{"line_number":27,"context_line":"        return self.queryclient.select_destinations(context, spec_obj,"},{"line_number":28,"context_line":"                instance_uuids, return_objects, return_alternates)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def update_aggregates(self, context, aggregates):"},{"line_number":31,"context_line":"        self.queryclient.update_aggregates(context, aggregates)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_38b1e890","line":28,"range":{"start_line":25,"start_character":0,"end_line":28,"end_character":66},"in_reply_to":"3f79a3b5_2cd3f237","updated":"2018-11-28 21:23:20.000000000","message":"it sure seems to be.\n\nhttp://codesearch.openstack.org/?q\u003dscheduler_client%5C.select_destinations\u0026i\u003dnope\u0026files\u003d\u0026repos\u003dnova","commit_id":"47ec5327c97c5916d9bc2b319bef8a7196fda60f"}]}
